list p=16f88, r=dec ;especificaciones del micro
#include <p16f88.inc> ; inclusion de archivos y registros
__CONFIG _CONFIG1, _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _MCLR_OFF & _LVP_OFF & _INTRC_IO
cblock H'70'
d1
d2
d3
TEMP
tempa
endc
RST code 0x00
goto Start
Start
bsf STATUS, RP0
movlw b'00000111'
movwf TRISA
clrf TRISB
movlw 0x60
movwf OSCCON
clrf ANSEL
MOVLW D'25' ; 9600 BAUD @ 20 MHZ FOSC +0.16 ERR
MOVWF SPBRG
MOVLW B'00100100' ; BRGH = 1
MOVWF TXSTA ; ENABLE ASYNC TRANSMISSION, SET BRGH
BANKSEL RCSTA ; BANK0
MOVLW B'10010000'
MOVWF RCSTA ; ENABLE ASYNC RECEPTION
MOVF RCREG,W
MOVF RCREG,W
MOVF RCREG,W ; FLUSH RECEIVE BUFFER
clrf PORTA
bsf PORTA, 4
bsf PORTA, 3
CLRF TEMP
movlw d'02'
movwf tempa
goto INICIO
SETTLE
DECFSZ TEMP
GOTO SETTLE
INICIO
movlw b'1001111'
bcf PORTA, 4
movwf PORTB
call Delay
bsf PORTA, 4
movlw b'0111111'
bcf PORTA, 3
movwf PORTB
call Delay
bsf PORTA, 3
movf PORTA, W
andlw 0x00
subwf tempa, W
btfsc STATUS, Z
goto INICIO
movf PORTA, W
movwf tempa
addlw h'30'
call transmitir
goto INICIO
transmitir
NOP
BTFSS PIR1,TXIF ;XMIT BUFFER EMPTY?
GOTO transmitir ;NO, WAIT
MOVWF TXREG
return
Delay
;49993 cycles
movlw 0x0E
movwf d1
movlw 0x28
movwf d2
Delay_0
decfsz d1, f
goto $+2
decfsz d2, f
goto Delay_0
;3 cycles
goto $+1
nop
;4 cycles (including call)
return
END