hola necesito modificar este programa es para hacer la comunicacion de pc a pic 16f84 lo que me hace este programa es que el pic cuenta de 0 a 9 y manda el dato a la pc ahora necesito que el pc mande el dato al pic y que en el pic pueda haber un corrimiento y regrese el pic el dato a la compu ojala me puedan ayudar.
lo necesito urgentemente espero alguien me ayude y de ante mano gracias.
el programa del pic es este:
LIST p=16f84
indf equ 0h
tmro equ 1h
pc equ 2h
status equ 3h
fsr equ 4h
ptoa equ 5h
ptob equ 6h
trisa equ 85h
trisb equ 86h
trans equ 0ch
r0d equ 0dh
r0e equ 0eh
unidad equ 10h
decena equ 11h
centena equ 12h
r14 equ 14h
r1b equ 1bh
loops equ 13h
loops2 equ 14h
conta equ 15h
z equ 2
rp0 equ .5h
z equ 2h
c equ 0h
w equ 0h
r equ 1h
tx equ 7h
org 00
goto inicio
org 05h
delay1 movlw .166
startup movwf r0e
redo nop
nop
decfsz r0e
goto redo
retlw 0
retardo movlw d’100’
movwf loops
top2 movlw d"110"
movwf loops2
top nop
nop
nop
nop
nop
nop
decfsz loops2
goto top
decfsz loops
goto top2
retlw 0
enviar movwf trans
xmrt movlw 8
movwf r0d
bcf ptob,tx
call delay1
xnext bcf ptob,tx
bcf status,c
rrf trans
btfsc status,c
bsf ptob,tx
call delay1
decfsz r0d
goto xnext
bsf ptob,tx
call delay1
retlw 0
enviarsuma incf conta
goto ciclo
enviarresta decf conta
goto ciclo2
inicio bsf status,rp0
movlw 00h
movwf trisa
movlw 07fh
movwf trisb
bcf status,rp0
bsf ptob,tx
clrf conta
ciclo movf conta,w
movwf ptoa
addlw 30h
call enviar
call retardo
pulsa btfsc ptob,0
goto pulsa
call retardo
btfsc ptob,0
goto pulsa
incf conta
movf conta,w
xorlw 0ah
btfsc status,z
goto enviarresta
goto ciclo
ciclo2 movf conta,w
movwf ptoa
addlw 30h
call enviar
call retardo
pulsa2 btfsc ptob,0
goto pulsa
call retardo
btfsc ptob,0
goto pulsa
decfsz conta
goto ciclo2
goto enviarsuma
end
y el programa en c++ para la pc es el siguiente:
#include<conio.h>
#include<stdio.h>
#include<dos.h>
#include<math.h>
#include<bios.h>
int puerto, COM1, COM2;
int k,j,dato;
int config;
char lectura[1];
char dato1[2];
char leer()
{
do
{
dato=bioscom(2,0x83,puerto);
}while(((dato<31)|(dato>127))&(!kbhit()));
return dato;
}
void main(void)
{
COM1=0;
COM2=1;
puerto=COM1;
clrscr();
config=0x83;
bioscom(0,config,puerto);
gotoxy(29,8);
printf("Escape->Salir"
;
gotoxy(23,10);
printf("El dato del contador es:"
;
do
{
if(!kbhit())
dato1[0]=leer();
if(!kbhit())
{
gotoxy(40,12);
printf("%1s",dato1);
}
}while(!kbhit());
clrscr();
}
estos son los dos programas ¡gracias por la ayuda y los
consejos!