'DEFINE OSC 4
@ DEVICE PIC16F877A
@ DEVICE PROTECT_OFF,CPD_OFF,WDT_OFF,PWRT_ON,BOD_OFF,LVP_OFF
INCLUDE "modedefs.bas" ;incluyen los modos de comunicación
TRISA = $FF
TRISB = $F1
TRISC = $BF
TRISD = $F3
serial VAR BYTE ;variable de almacenamiento de 255
releF VAR portd.2 ;nombres para los pines
led var portd.4
x var byte
entra var portb.0
salida var portb.1
SYMBOL TxD = PORTC.6
SYMBOL RxD = PORTC.7
inicio:
; Inicializar los puertos
PORTB=$00
PORTC=TRISC
PORTD=TRISD
;3 parpadeos del led que indica funciona
FOR x =1 TO 3
HIGH led
PAUSE 200
LOW led
PAUSE 200
NEXT
PAUSE 500
recibir:
SERIN RxD,T9600,serial ; comparar con pruebaredes
SELECT CASE serial
CASE "A" ; A
GOTO automatico
CASE "B" ; B
GOTO horarioapa
CASE "C" ; C
GOTO horarioenc
CASE ELSE
SEROUT TxD,T9600,["comando invalido.",13,10]
END SELECT
PAUSE 500 ; Retardo para estabilizar el puerto
goto recibir
automatico:
SEROUT TxD,T9600,["control automatico.",13,10]
if entra=1 then
high salida
SEROUT TxD,T9600,["luminaria encendida",13,10]
PAUSE 500
goto recibir
else
low salida
SEROUT TxD,T9600,["luminaria apagada.",13,10]
PAUSE 500
goto recibir
endif
horarioapa:
SEROUT TxD,T9600,["control horario.",13,10]
low salida
PAUSE 500
SEROUT TxD,T9600,["luminaria apagada.",13,10]
PAUSE 500
goto recibir
horarioenc:
SEROUT TxD,T9600,["control horario.",13,10]
PAUSE 500
high salida
PAUSE 500
SEROUT TxD,T9600,["luminaria encendida",13,10]