PROYECTO: USART_RX
este proyecto trata de un circuito que lee los comandos ascii povenientes del hiperterminal de windows y los visualiza en unos led en formato binario.
para esto,necesitaremos los siguientes materiales:
1 cable conversor USB-RS232
1 adaptador de señales RS232-TTL
en este programa,se visualizara por el puerto B. el dato que se reciva por el pin Rx de la usart del pic 16f876.
como practica principal he usado el hiperterminal de windows.que conectando un conversor USB-RS232 con una conexion a 9600 bps.
y culla señal tx.se ha conectado a un adaptador de señales con un MAX232.y de este a la usart del pic(RC7 pin rx)
;****************************************** http://www.ingeniopic.com *******
; PROGRAMA : usart_rx.asm
; Funcion : visualizar datos recividos de la usart por el puerto B.
; Serial port config: 9600 baudios,8 bits,paridad = none
;
; Revision : 1.0 6/1/2009 Programa para : PIC16F876
; CPU Clock : 4 MHz Reloj instruccion : 4 MHz = 0.25 us
; WDT : Deshabilitado Tipo de reloj : XT
; Code Prot : OFF velocidad usart: 9.600 Kbps
;****************************************** http://www.ingeniopic.com *******
LIST P=16F876 ;Se indica el modo de procesador
RADIX HEX ;Sistema de numeracion hexadecimal
INCLUDE <P16f876.inc> ;se incluye la definicion de los registros
;registros internos
__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC & _BODEN_OFF &_LVP_OFF &_CPD_OFF &_WRT_ENABLE_OFF
ERRORLEVEL -302 ;para que no se notifiquen los errires por los registros fuera del banco de ram.
BANK0 MACRO ;macro para la seleccion del banco 0
BCF STATUS,RP0
BCF STATUS,RP1
ENDM
BANK1 MACRO ;macro para la seleccion del banco 1
BSF STATUS,RP0
BCF STATUS,RP1
ENDM
;<<<<<<---------------------- VECTOR DE RESET ------------------------>>>>>>>
ORG 0x00 ;Inicio en el Vector de Reset
goto INICIO ;Va a la primera instruccion del programa
;<<<<<<------------------- VECTOR DE INTERRUPCION -------------------->>>>>>>
ORG 0x04 ;Vector de interrupcion
goto INTER ;salta a la linea INTER
;<<<<<<----------------- CONFIGURACION DE LOS REGISTROS GENERALES ------------------->>>>>>>
INICIO BANK1
clrf TRISB ;Puerto B como salida
bsf TRISC,7 ;RC7/Rx como entrada
movlw .25 ;valor para seleccionar 9600 baudios
movwf SPBRG
movlw b'00100100' ;Configuracion USART modo alta velocidad 9600 baud y activacion de transmision
movwf TXSTA ;carga valor anterior en registro asociado al generador del baud rate
bsf PIE1,RCIE ;Habilitacion interrupcion RX
BANK0 ;Cambio al banco 0
movlw b'10010000' ;Configuracion de la usart
movwf RCSTA ;para recepcion continua y habilitacion de la usart
movlw b'11000000' ;Habilitacion para las
movwf INTCON ;interrupciones generales
clrf PORTB ;borra las salidas del puerto b
;<<<<<<<<-----------------------------PROGRAMA PRINCIPAL--------------------------->>>>>>>>>>>>>>>>>>>>>>>>
BUCLE goto BUCLE ;espera aqui hasta que salte la interuupcion.
;<<<<<<<<-------------------COMPROVACION DE TIPO DE INTERRUPCION------------>>>>>>>>>>>>>>
INTER BANK0
btfss PIR1,RCIF ;comprueba si el shift register(RSR)esta lleno.y si es asi salta
retfie ;retorno de interrupcion si no se ha dado la circunstancia anterior
;<<<<<<<<-------------------------VISUALIZACION DE DATO RECIVIDO------------>>>>>>>>>>>>>>
LEEDATO movf RCREG,W ;Lectura dato recibido
movwf PORTB ;Visualiza dato recibido
retfie ;retorna de la interrupcion.
END