;**************************************************************************** ; RUTINAS DE COMUNICACION SERIE TRANSMISION * ; * ; Se trata de comunicar un PIC16f84 con un PC. RA2 = Transmisión. * ; Esta rutina transmite una cadena de caracteres mediante el standar serie * ; RS232. A 1200 baudios * ;**************************************************************************** STATUS equ 0x03 ;Registro de estado TRISA equ 0x05 ;Registro de direci¢n de la puerta A PORTA equ 0x05 ;Puerta A TRISB equ 0x06 ;Registro de direcci¢n de la puerta B PORTB equ 0x06 ;Puerta B PCL equ 0x02 ;contador de programa w equ 0 f equ 1 c equ 0 z equ 2 D0 EQU 0X0C D1 EQU 0X0B D2 EQU 0X0E D3 EQU 0X0F D4 EQU 0X10 D5 EQU 0X11 D6 EQU 0X12 D7 EQU 0X13 cuenta EQU 0X14 ;variable para retardo byte EQU 0X15 ;dato a transmitir caracter EQU 0X16 ;contiene el numero de caracteres a transmitir cuenta2 EQU 0x17 ;2ª variable retardo list p=16c84 ;Tipo de procesador #DEFINE BANCO1 bsf STATUS,5 #DEFINE BANCO0 bcf STATUS,5 org 0 INICIO movlw 0 movwf caracter BANCO1 clrf TRISA BANCO0 bsf PORTA,2 ;RA2=1 movlw 0xff movwf cuenta mas call obtener; incf caracter,f movwf byte movlw 0X0D ;?es el ultimo xorwf byte,w btfsc STATUS,z goto fin rrf byte,f ;extraccion de los datos clrf D0 btfss STATUS,c bcf D0,2 btfsc STATUS,c bsf D0,2 rrf byte,f clrf D1 btfss STATUS,c bcf D1,2 btfsc STATUS,c bsf D1,2 rrf byte,f clrf D2 btfss STATUS,c bcf D2,2 btfsc STATUS,c bsf D2,2 clrf D3 rrf byte,f btfss STATUS,c bcf D3,2 btfsc STATUS,c bsf D3,2 clrf D4 rrf byte,f btfss STATUS,c bcf D4,2 btfsc STATUS,c bsf D4,2 clrf D5 rrf byte,f btfss STATUS,c bcf D5,2 btfsc STATUS,c bsf D5,2 clrf D6 rrf byte,f btfss STATUS,c bcf D6,2 btfsc STATUS,c bsf D6,2 clrf D7 rrf byte,f clrf D7 btfss STATUS,c bcf D7,2 btfsc STATUS,c bsf D7,2 movlw 0 ;bit de inicio(comienza la transmisión) movwf PORTA call retardo movf D0,w movwf PORTA call retardo movf D1,w movwf PORTA call retardo movf D2,w movwf PORTA call retardo movf D3,w movwf PORTA call retardo movf D4,w movwf PORTA call retardo movf D5,w movwf PORTA call retardo movf D6,w movwf PORTA call retardo movf D7,w movwf PORTA call retardo movlw 4 ;bit de paro movwf PORTA call retardo goto mas fin goto INICIO retardo decfsz cuenta,f goto retardo movlw 0x14 movwf cuenta2 retard decfsz cuenta2,f goto retard movlw 0xff movwf cuenta nop return obtener movf caracter,w addwf PCL,f retlw 'H' retlw 'o' retlw 'l' retlw 'a' retlw ' ' retlw 'A' retlw 'M' retlw 'O' retlw 'R' retlw ' ' retlw ' ' retlw 'H' RETLW 'e' retlw ' ' retlw 'c' retlw 'o' retlw 'n' retlw 's' retlw 'e' retlw 'g' retlw 'u' retlw 'i' retlw 'd' retlw 'o' retlw ' ' retlw 'e' retlw 's' retlw 't' retlw 'o' retlw ' ' retlw 'G' retlw 'r' retlw 'a' retlw 'c' retlw 'i' retlw 'a' retlw 's' retlw ' ' retlw 'a' retlw ' ' retlw 'T' retlw 'I' retlw 0x0d end