Rx/Tx Serial Con Pic16F877A

Páginas: 9 (2249 palabras) Publicado: 17 de enero de 2013
LIST 16F877A

INCLUDE "P16F877A.INC"



_CONFIG_CP_OFF&_DEBUG_OFF&_WRT_ENABLE_ON&_CPD_OFF&_LVP_OFF&_PWRTE_ON&_WDT_OFF&_XT_OSC



Cblock 20

tmp0

tmp1

Endc



ORG 00h

GOTO CONFIGU

ORG 04h

GOTO INTER



;Primera instrucción programa principal, configuracón de los puertos y registros a utilizar para la comunicación serial.CONFIGU

BSF STATUS,5 ;Paso al banco 1 para configurar los puertos

MOVLW B'10001110'

MOVWF ADCON1 ;Se utilizaran E/S digitales

CLRF TRISA ;Limpio el puerto, Puerto A como salida

CLRF TRISB ;Limpio el puerto, Puerto B como salida

MOVLW B'10000000' ;Habilita el puerto serie configuración RC7/RX y RC6/TXutilizados para el USART

MOVWF TRISC ;Puerto C como salida

CLRF TRISD ;Limpio el puerto, Puerto D como salida

CLRF TRISE ;Limpio el puerto, Puerto E como salida

MOVLW B'00100100' ;Valor a cargar en el registro TXSTA donde se activa el USART

MOVWF TXSTA

MOVLW .25 ;Se carga .25 en w para XT 4MhzMOVWF SPBRG ;Se carga el valor en el registro SPBRG para trabajar a 9600 baudios

BSF PIE1,RCIE ;Habilita la Interrupción por RX

BCF STATUS,5 ;Cambio al otro banco

CLRF PORTA ;Limpia el puerto A

CLRF PORTB ;Limpia el puerto B

CLRF PORTC ;Limpia el puerto C

CLRF PORTD ;Limpia elpuerto D

CLRF PORTE ;Limpia el puerto E

MOVLW B'10010000' ;Configuración del USART

MOVWF RCSTA ;Para RX en modo continuo

MOVLW B'11000000' ;Habilitito las interrupciones

MOVWF INTCON



CLRWDT ;Limpia el WATCHDOG

GOTO $-1 ;Bucle de espera hasta que se genere una Interrupción por RX



;Segunda instrucción programa principal Recepción pr interrupción.





INTER

BCF PIR1,RCIF ;Bajo Bandera de Recepción

MOVLW d'00' ;cargo W con el número 0

XORWF RCREG,w ;Comparo lo que recibi en la Rx con W

BTFSS STATUS,2 ;Si es igual no ejecuta la siguiente instrucción y salta a la siguiente

GOTO $+6;Salto 6 instrucciones

CLRF PORTA ;Limpia el puerto A

CLRF PORTB ;Limpia el puerto B

CLRF PORTC ;Limpia el puerto C

CLRF PORTD ;Limpia el puerto D

CLRF PORTE ;Limpia el puerto E



MOVLW d'01' ;Cargo W con el número 1

XORWF RCREG,w ;Comparo si lo que recibi es igual a 1BTFSS STATUS,2 ;Si es igual brinco una instrucción

GOTO $+3 ;Salto 3 instrucciones

BSF PORTB,0 ;Coloco en alto RB0

call delay ;llama a la rutina de temporización de 100ms

BCF PORTB,0 ;Coloca en bajo la patita RB0



MOVLW d'02' ;Cargo W con el número 2

XORWF RCREG,w ;Comparosi lo que recibi es igual a 2

BTFSS STATUS,2 ;Si es igual brinco una instrucción

GOTO $+3 ;Salto 3 instrucciones

BSF PORTB,1 ;Coloco en alto RB1

call delay ;llama a la rutina de temporización de 100ms

BCF PORTB,1 ;Coloca en bajo la patita RB1



MOVLW d'03' ;Cargo W con el número 3XORWF RCREG,w ;Comparo si lo que recibi es igual a 3

BTFSS STATUS,2 ;Si es igual brinco una instrucción

GOTO $+3 ;Salto 3 instrucciones

BSF PORTB,2 ;Coloco en alto RB2

call delay ;llama a la rutina de temporización de 100ms

BCF PORTB,2 ;Coloca en bajo la patita RB2



MOVLW d'04'...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Comunicación serial con el pic16f877
  • tx y rx
  • Tx-Rx
  • Tx Y Rx Fm
  • Laboratorio Tx, Rx
  • Antenas
  • Tx Rx
  • Pic16f877a

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS