Hola Amigos:
He hecho los siguientes programas para un emisor y un receptor en proteus, si bien he unido directamente el emisor con el receptor, la idea es usar modulos de 433 MHz.
Emisor:
include "modedefs.bas"
define OSC 4
TRISB=%11111111
B0 var byte
inicio:
select case PORTB
case %11110000
serout PORTA.1,N1200,[0,"F"]
case %01110000
serout PORTA.1,N1200,[0,"B"]
case %10110000
serout PORTA.1,N1200,[0,"L"]
case %11010000
serout PORTA.1,N1200,[0,"R"]
case %11100000
serout PORTA.1,N1200,[0,"P"]
end select
goto inicio
end
Receptor:
include "modedefs.bas"
define OSC 4
B0 var byte
TRISB=%00000000
inicio:
PORTB = 0
loop:
SERIN PORTA.0,N1200,B0
select case B0
case "F"
gosub adelante
case "B"
gosub atras
case "L"
gosub izquierda
case "R"
gosub derecha
case "P"
gosub parar
end select
goto loop
adelante:
PORTB.3 = 0
PORTB.4 = 0
PORTB.5 = 0
PORTB.6 = 0
PORTB.7 = 1
pause 500
return
atras:
PORTB.3 = 0
PORTB.4 = 0
PORTB.5 = 0
PORTB.6 = 1
PORTB.7 = 0
pause 500
return
izquierda:
PORTB.3 = 0
PORTB.4 = 0
PORTB.5 = 1
PORTB.6 = 0
PORTB.7 = 0
pause 500
return
derecha:
PORTB.3 = 0
PORTB.4 = 1
PORTB.5 = 0
PORTB.6 = 0
PORTB.7 = 0
pause 500
return
parar:
PORTB.3 = 1
PORTB.4 = 0
PORTB.5 = 0
PORTB.6 = 0
PORTB.7 = 0
pause 500
return
end
La idea es cada vez que pulso un boton se prende el led correspondiente, y cuando no pulso ninguno se debe prender el ultimo led, si bien cuando pulso cada boton se prende el led correspondiente, cuando no pulso ninguno no se prende el ultimo led, se queda prendido el led correspondiente al ultimo boton pulsado.
En que puede estar mal mi programa?
Saludos