proyectos

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