SlideShare una empresa de Scribd logo
1 de 3
;Comunicación con RS232
;con el PIC16F84 y un XTAL de 4MHz

     list p=16F84
     radix HEX

;*****************************Declaración de los puertos***********************

TMR_Opt      EQU    0x01
Estado       EQU    0x03
PA_TA EQU    0x05
PB_TB EQU    0x06
Intcon       EQU    0x0B

Rxdreg       EQU    0x0C                  ;registro de recepción
Txdreg       EQU    0x0D                  ;registro de transmisión
Cont EQU     0x0E                   ;contador de bits transmitidos
Dlycnt       EQU    0x0F                  ;contador de retraso

      #define        RXport         PA_TA,1          ;llamamos RXport a PA1
configurado como    la señal   RX
      #define        TXport         PA_TA,0          ;llamamos TXport a PA0
configurado como    la señal   TX
      #define        SAport        PA_TA,3          ;llamamos SAport a PA3
configurado como    la señal   que activa las salidas
      #define        ENport        PA_TA,2          ;llamamos ENport a PA2
configurado como    la señal   que activa las entradas

     ORG     0

;****************Programación de las
puertas****************************************

     clrf    Intcon                       ;prohibición de las interrupciones
     bsf     Estado,5               ;selección del banco 1
     clrf    PA_TA                  ;Programación del PA
     clrf    PB_TB                  ;Programación del PB
     bcf     Estado,5               ;selección del banco 0

;****************Inicialización del
circuito***************************************

      bsf   TXport                       ;Activación de Tx porque si no estaria
transmitiendo
      bsf   ENport                       ;reseteo de las salidas del circuito
      clrf PB_TB
      bsf   SAport
      bsf   Estado,5                ;selección del banco 1
      bsf   RXport                        ;Progración de RX port como entrada
      bcf   Estado,5                ;selección del banco 0
      bcf   SAport
Inicio      call RxD
      btfss Rxdreg,0                ;Comprueba que orden se le ha mandado de lectura o
escritura
      goto Salida
      goto Entrada

;********Programación como salidas***************************

Salida       bsf   SAport                       ;se activa el 74373
      call   RxD                    ;leemos dato del ordenador
      bsf    Estado,5               ;Selección del banco 1
      clrf   PB_TB                  ;programación del PB como salidas
      bcf    Estado,5               ;Selección del banco 0
movf    Rxdreg,W         ;Movemos el dato recibido a la salida
      movwf   PB_TB
borra bcf     SAport                ;desactivación del 74373
      btfsc   SAport                ;comprueba que se ha desactivado el 74373
      goto    borra
      goto    Inicio

;*******Programación como entradas******************************

Entrada       bcf   ENport                 ;activación del 74245
      clrf    Txdreg                 ;reseteo del registro de transmisión
      bsf     Estado,5         ;selección del banco 1
      movlw   0xFF             ;programación de PB como entrada
      movwf   PB_TB
      bcf     Estado,5         ;selección delbanco 0
      movf    PB_TB,W                ;llevamos dato de PB al registro de
transmisión
      movwf   Txdreg
      call    TxD              ;transmisión del dato
      bsf     ENport                 ;desactivación del 74245
      bsf     Estado,5         ;selección del banco 1
      clrf    PB_TB            ;programación del PB como salidas
      bcf     Estado,5         ;selección del banco 0
      clrf    PB_TB            ;reseteo de las salidas
      goto    Inicio

;*********************Rutina de recepción*********************

RxD   clrf Rxdreg                   ;reseto del registro de recepción
      btfsc RXport                  ;comprueba que se ha mandado el bit de
inicio
      goto RxD                ;si no see ha mandado espera a que lo manden
      call Dly_Ini                  ;si se ha mandado hace el retardo
correspondiente al bit de inicio
      movlw 0x08              ;mueve el número de bits a recibir al contador
      movwf Cont
RxD_Bit     call Dly_bit                  ;hace el retardo del bit
      btfsc RXport                  ;comprueba que dato se le ha mandado
      bsf   Rxdreg,7          ;si es un uno se activa el bit 7 del registro de
recepción
      btfss RXport
      bcf   Rxdreg,7          ;si es un cero se desactiva el bit
      decfsz      Cont,W                  ;decrementa el contador y lo guarda en
W para rotar sólo 6 veces
      rrf   Rxdreg,f                ;rota a la derecha el registro de recepción
si el esultado anterior no es cero
      decfsz      Cont,f                  ;decrementa el contador para ve si ha
terminado
      goto RxD_Bit                  ;va a leer otro bit
      call Dly_bit                  ;hace el retardo del bit de stop
      return                        ;regresa al salto

;*********************Rutina de transmisión*****************************

TxD   movlw   0x08             ;mueve el   número de bits a transmitir al contador
      movwf   Cont
      bcf     TXport                ;envia el bit de inicio
      call    Dly_bit               ;hace el retardo del bit
Txd_Bit       btfsc Txdreg,0        ;comprueba si es un 0 o un 1 lo que hay que
enviar
      bsf     TXport                ;si es un 1 activa el puerto de transmisión
      btfss   Txdreg,0
      bcf     TXport                ;si es un 0 desactiva el puerto
      rrf     Txdreg,f              ;rota a la derecha el registro de
transmisión
      call Dly_bit                 ;hace el retardo
      decfsz      Cont,f                 ;decrementa el contador de bits
      goto Txd_Bit                 ;si no se han mandado todos los bits va a
seguir enviando
      bsf   TXport                 ;envio del bit de STOP
      call Dly_bit
      call Dly_bit                 ;se hacen dos retardos para centrar tiempos
      return

;*********************Temporizador de retardo entre bit y
bit**********************

Dly_bit     movlw 0x1D              ;se hace un retardo de 833us que es el
tiempo que se tarda en transmitir
                              ;un bit a 9600 baudios
      movwf Dlycnt
      goto Dly                ;salto a la rutina de temorización

;********************Temporizador de retardo del bit de
inicio**********************

Dly_Ini     movlw 0x08             ;retardo equivalente a la mitad del tiempo
que tarda entre bit y bit
      movwf Dlycnt
      goto Dly               ;salto a la rutina de temporización

;*********************Rutina de
temporización****************************************

Dly   decfsz      Dlycnt,f         ;decrementa el contador de temporización, si
el resultado es 0 salta
      goto Dly               ;si es 1 vuelve a decrementar
      return                       ;si es 0 regresa a donde se hizo el salto

     end

Más contenido relacionado

La actualidad más candente

Parcial dic 13 t2 2008 sol
Parcial dic 13 t2 2008 solParcial dic 13 t2 2008 sol
Parcial dic 13 t2 2008 solJair BG
 
Parcial t1 2011 sol
Parcial t1 2011 solParcial t1 2011 sol
Parcial t1 2011 solJair BG
 
Micc final feb14_2009_soluc
Micc final feb14_2009_solucMicc final feb14_2009_soluc
Micc final feb14_2009_solucJair BG
 
Juego de instrucciones: PIC 16F87x
Juego de instrucciones: PIC 16F87xJuego de instrucciones: PIC 16F87x
Juego de instrucciones: PIC 16F87xConstructora Kaizen
 
Curso de microcontroladores capitulo 02
Curso de microcontroladores capitulo 02Curso de microcontroladores capitulo 02
Curso de microcontroladores capitulo 02Hamiltonn Casallas
 
Ejercicio pic assembler
Ejercicio pic assemblerEjercicio pic assembler
Ejercicio pic assemblerAlexis Rivera
 
Micc final sep02_2010 solucion
Micc final sep02_2010 solucionMicc final sep02_2010 solucion
Micc final sep02_2010 solucionJair BG
 
Parcial 2 tdic10_2010
Parcial 2 tdic10_2010Parcial 2 tdic10_2010
Parcial 2 tdic10_2010Jair BG
 
Micc temas examen
Micc temas examenMicc temas examen
Micc temas examenJair BG
 
MICROCONTROLADORES II EN C. TEMA 5
MICROCONTROLADORES II EN C. TEMA 5MICROCONTROLADORES II EN C. TEMA 5
MICROCONTROLADORES II EN C. TEMA 5Luis Zurita
 
Curso de microcontroladores capitulo 07
Curso de microcontroladores capitulo 07Curso de microcontroladores capitulo 07
Curso de microcontroladores capitulo 07Hamiltonn Casallas
 
Curso de microcontroladores capitulo 09
Curso de microcontroladores capitulo 09Curso de microcontroladores capitulo 09
Curso de microcontroladores capitulo 09Hamiltonn Casallas
 
Uso de las tablas en lenguaje ensamblador
Uso de las tablas en lenguaje ensambladorUso de las tablas en lenguaje ensamblador
Uso de las tablas en lenguaje ensambladorLuis Zurita
 
Curso de microcontroladores capitulo 12
Curso de microcontroladores capitulo 12Curso de microcontroladores capitulo 12
Curso de microcontroladores capitulo 12Hamiltonn Casallas
 
Micc parcial dic9_2010 - copia (2)_sol
Micc parcial dic9_2010 - copia (2)_solMicc parcial dic9_2010 - copia (2)_sol
Micc parcial dic9_2010 - copia (2)_solJair BG
 

La actualidad más candente (20)

Parcial dic 13 t2 2008 sol
Parcial dic 13 t2 2008 solParcial dic 13 t2 2008 sol
Parcial dic 13 t2 2008 sol
 
Parcial t1 2011 sol
Parcial t1 2011 solParcial t1 2011 sol
Parcial t1 2011 sol
 
Micc final feb14_2009_soluc
Micc final feb14_2009_solucMicc final feb14_2009_soluc
Micc final feb14_2009_soluc
 
Juego de instrucciones: PIC 16F87x
Juego de instrucciones: PIC 16F87xJuego de instrucciones: PIC 16F87x
Juego de instrucciones: PIC 16F87x
 
Txusart
TxusartTxusart
Txusart
 
Curso de microcontroladores capitulo 02
Curso de microcontroladores capitulo 02Curso de microcontroladores capitulo 02
Curso de microcontroladores capitulo 02
 
Ejercicio pic assembler
Ejercicio pic assemblerEjercicio pic assembler
Ejercicio pic assembler
 
Micc final sep02_2010 solucion
Micc final sep02_2010 solucionMicc final sep02_2010 solucion
Micc final sep02_2010 solucion
 
Parcial 2 tdic10_2010
Parcial 2 tdic10_2010Parcial 2 tdic10_2010
Parcial 2 tdic10_2010
 
Comandos bbu
Comandos bbuComandos bbu
Comandos bbu
 
Micc temas examen
Micc temas examenMicc temas examen
Micc temas examen
 
Usart
UsartUsart
Usart
 
MICROCONTROLADORES II EN C. TEMA 5
MICROCONTROLADORES II EN C. TEMA 5MICROCONTROLADORES II EN C. TEMA 5
MICROCONTROLADORES II EN C. TEMA 5
 
Curso de microcontroladores capitulo 07
Curso de microcontroladores capitulo 07Curso de microcontroladores capitulo 07
Curso de microcontroladores capitulo 07
 
Teclado Matricial
Teclado MatricialTeclado Matricial
Teclado Matricial
 
Curso de microcontroladores capitulo 09
Curso de microcontroladores capitulo 09Curso de microcontroladores capitulo 09
Curso de microcontroladores capitulo 09
 
Uso de las tablas en lenguaje ensamblador
Uso de las tablas en lenguaje ensambladorUso de las tablas en lenguaje ensamblador
Uso de las tablas en lenguaje ensamblador
 
Capítulo 4: Cifrado en Bloque
Capítulo 4: Cifrado en BloqueCapítulo 4: Cifrado en Bloque
Capítulo 4: Cifrado en Bloque
 
Curso de microcontroladores capitulo 12
Curso de microcontroladores capitulo 12Curso de microcontroladores capitulo 12
Curso de microcontroladores capitulo 12
 
Micc parcial dic9_2010 - copia (2)_sol
Micc parcial dic9_2010 - copia (2)_solMicc parcial dic9_2010 - copia (2)_sol
Micc parcial dic9_2010 - copia (2)_sol
 

Similar a Comunicación RS232 PIC16F84 4MHz

Curso Micro Tema 3
Curso Micro Tema 3Curso Micro Tema 3
Curso Micro Tema 3Luis Zurita
 
Laboratorio de Microcomputadoras - Práctica 03
 Laboratorio de Microcomputadoras - Práctica 03 Laboratorio de Microcomputadoras - Práctica 03
Laboratorio de Microcomputadoras - Práctica 03Cristian Ortiz Gómez
 
Manejo de teclado 4x4 con pic 16 f84a
Manejo de teclado 4x4 con pic 16 f84aManejo de teclado 4x4 con pic 16 f84a
Manejo de teclado 4x4 con pic 16 f84axeleta
 
Ejemplo varias interrupciones
Ejemplo varias interrupcionesEjemplo varias interrupciones
Ejemplo varias interrupcionesLuis Zurita
 
Examen micros t1_06_solucion
Examen micros t1_06_solucionExamen micros t1_06_solucion
Examen micros t1_06_solucionJair BG
 
Puertos de entrada/salida
Puertos de entrada/salidaPuertos de entrada/salida
Puertos de entrada/salidatecautind
 
Puertos de entrada diapositivas
Puertos de entrada diapositivasPuertos de entrada diapositivas
Puertos de entrada diapositivastecautind
 
Ejemplos De Timer E Interrupcion
Ejemplos De Timer E InterrupcionEjemplos De Timer E Interrupcion
Ejemplos De Timer E InterrupcionLuis Zurita
 
Proyectos con el pic16 f84 cekit
Proyectos con el pic16 f84 cekitProyectos con el pic16 f84 cekit
Proyectos con el pic16 f84 cekitEnrique Trascastro
 
Guía de ejercicios resueltos y propuestos tema 4
Guía de ejercicios resueltos y propuestos tema 4Guía de ejercicios resueltos y propuestos tema 4
Guía de ejercicios resueltos y propuestos tema 4Luis Zurita
 
Frecuencimetro receptor hall esquema y programa pbp 28 pag
Frecuencimetro receptor hall esquema y programa pbp 28 pagFrecuencimetro receptor hall esquema y programa pbp 28 pag
Frecuencimetro receptor hall esquema y programa pbp 28 pagjoaquinin1
 

Similar a Comunicación RS232 PIC16F84 4MHz (20)

Curso Micro Tema 3
Curso Micro Tema 3Curso Micro Tema 3
Curso Micro Tema 3
 
Laboratorio de Microcomputadoras - Práctica 03
 Laboratorio de Microcomputadoras - Práctica 03 Laboratorio de Microcomputadoras - Práctica 03
Laboratorio de Microcomputadoras - Práctica 03
 
Manejo de teclado 4x4 con pic 16 f84a
Manejo de teclado 4x4 con pic 16 f84aManejo de teclado 4x4 con pic 16 f84a
Manejo de teclado 4x4 con pic 16 f84a
 
Ejemplo varias interrupciones
Ejemplo varias interrupcionesEjemplo varias interrupciones
Ejemplo varias interrupciones
 
Examen micros t1_06_solucion
Examen micros t1_06_solucionExamen micros t1_06_solucion
Examen micros t1_06_solucion
 
Uso del tmr0
Uso del tmr0Uso del tmr0
Uso del tmr0
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Control digital equilibrador
Control digital equilibradorControl digital equilibrador
Control digital equilibrador
 
Puertos de entrada/salida
Puertos de entrada/salidaPuertos de entrada/salida
Puertos de entrada/salida
 
Puertos de entrada diapositivas
Puertos de entrada diapositivasPuertos de entrada diapositivas
Puertos de entrada diapositivas
 
Ejemplos De Timer E Interrupcion
Ejemplos De Timer E InterrupcionEjemplos De Timer E Interrupcion
Ejemplos De Timer E Interrupcion
 
PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84
 
Proyectos con el pic16 f84 cekit
Proyectos con el pic16 f84 cekitProyectos con el pic16 f84 cekit
Proyectos con el pic16 f84 cekit
 
Proye84
Proye84Proye84
Proye84
 
Guía de ejercicios resueltos y propuestos tema 4
Guía de ejercicios resueltos y propuestos tema 4Guía de ejercicios resueltos y propuestos tema 4
Guía de ejercicios resueltos y propuestos tema 4
 
Programas asm
Programas asmProgramas asm
Programas asm
 
Interrupciones
InterrupcionesInterrupciones
Interrupciones
 
Frecuencimetro receptor hall esquema y programa pbp 28 pag
Frecuencimetro receptor hall esquema y programa pbp 28 pagFrecuencimetro receptor hall esquema y programa pbp 28 pag
Frecuencimetro receptor hall esquema y programa pbp 28 pag
 

Más de luisvargasquinto

Más de luisvargasquinto (6)

Las 100 mejores rokas
Las 100 mejores rokasLas 100 mejores rokas
Las 100 mejores rokas
 
Circuito cargadors
Circuito cargadorsCircuito cargadors
Circuito cargadors
 
Digitalio config 16f887a_886
Digitalio config 16f887a_886Digitalio config 16f887a_886
Digitalio config 16f887a_886
 
Rtc ds1307
Rtc ds1307Rtc ds1307
Rtc ds1307
 
Instalacion
InstalacionInstalacion
Instalacion
 
Instalacion
InstalacionInstalacion
Instalacion
 

Comunicación RS232 PIC16F84 4MHz

  • 1. ;Comunicación con RS232 ;con el PIC16F84 y un XTAL de 4MHz list p=16F84 radix HEX ;*****************************Declaración de los puertos*********************** TMR_Opt EQU 0x01 Estado EQU 0x03 PA_TA EQU 0x05 PB_TB EQU 0x06 Intcon EQU 0x0B Rxdreg EQU 0x0C ;registro de recepción Txdreg EQU 0x0D ;registro de transmisión Cont EQU 0x0E ;contador de bits transmitidos Dlycnt EQU 0x0F ;contador de retraso #define RXport PA_TA,1 ;llamamos RXport a PA1 configurado como la señal RX #define TXport PA_TA,0 ;llamamos TXport a PA0 configurado como la señal TX #define SAport PA_TA,3 ;llamamos SAport a PA3 configurado como la señal que activa las salidas #define ENport PA_TA,2 ;llamamos ENport a PA2 configurado como la señal que activa las entradas ORG 0 ;****************Programación de las puertas**************************************** clrf Intcon ;prohibición de las interrupciones bsf Estado,5 ;selección del banco 1 clrf PA_TA ;Programación del PA clrf PB_TB ;Programación del PB bcf Estado,5 ;selección del banco 0 ;****************Inicialización del circuito*************************************** bsf TXport ;Activación de Tx porque si no estaria transmitiendo bsf ENport ;reseteo de las salidas del circuito clrf PB_TB bsf SAport bsf Estado,5 ;selección del banco 1 bsf RXport ;Progración de RX port como entrada bcf Estado,5 ;selección del banco 0 bcf SAport Inicio call RxD btfss Rxdreg,0 ;Comprueba que orden se le ha mandado de lectura o escritura goto Salida goto Entrada ;********Programación como salidas*************************** Salida bsf SAport ;se activa el 74373 call RxD ;leemos dato del ordenador bsf Estado,5 ;Selección del banco 1 clrf PB_TB ;programación del PB como salidas bcf Estado,5 ;Selección del banco 0
  • 2. movf Rxdreg,W ;Movemos el dato recibido a la salida movwf PB_TB borra bcf SAport ;desactivación del 74373 btfsc SAport ;comprueba que se ha desactivado el 74373 goto borra goto Inicio ;*******Programación como entradas****************************** Entrada bcf ENport ;activación del 74245 clrf Txdreg ;reseteo del registro de transmisión bsf Estado,5 ;selección del banco 1 movlw 0xFF ;programación de PB como entrada movwf PB_TB bcf Estado,5 ;selección delbanco 0 movf PB_TB,W ;llevamos dato de PB al registro de transmisión movwf Txdreg call TxD ;transmisión del dato bsf ENport ;desactivación del 74245 bsf Estado,5 ;selección del banco 1 clrf PB_TB ;programación del PB como salidas bcf Estado,5 ;selección del banco 0 clrf PB_TB ;reseteo de las salidas goto Inicio ;*********************Rutina de recepción********************* RxD clrf Rxdreg ;reseto del registro de recepción btfsc RXport ;comprueba que se ha mandado el bit de inicio goto RxD ;si no see ha mandado espera a que lo manden call Dly_Ini ;si se ha mandado hace el retardo correspondiente al bit de inicio movlw 0x08 ;mueve el número de bits a recibir al contador movwf Cont RxD_Bit call Dly_bit ;hace el retardo del bit btfsc RXport ;comprueba que dato se le ha mandado bsf Rxdreg,7 ;si es un uno se activa el bit 7 del registro de recepción btfss RXport bcf Rxdreg,7 ;si es un cero se desactiva el bit decfsz Cont,W ;decrementa el contador y lo guarda en W para rotar sólo 6 veces rrf Rxdreg,f ;rota a la derecha el registro de recepción si el esultado anterior no es cero decfsz Cont,f ;decrementa el contador para ve si ha terminado goto RxD_Bit ;va a leer otro bit call Dly_bit ;hace el retardo del bit de stop return ;regresa al salto ;*********************Rutina de transmisión***************************** TxD movlw 0x08 ;mueve el número de bits a transmitir al contador movwf Cont bcf TXport ;envia el bit de inicio call Dly_bit ;hace el retardo del bit Txd_Bit btfsc Txdreg,0 ;comprueba si es un 0 o un 1 lo que hay que enviar bsf TXport ;si es un 1 activa el puerto de transmisión btfss Txdreg,0 bcf TXport ;si es un 0 desactiva el puerto rrf Txdreg,f ;rota a la derecha el registro de
  • 3. transmisión call Dly_bit ;hace el retardo decfsz Cont,f ;decrementa el contador de bits goto Txd_Bit ;si no se han mandado todos los bits va a seguir enviando bsf TXport ;envio del bit de STOP call Dly_bit call Dly_bit ;se hacen dos retardos para centrar tiempos return ;*********************Temporizador de retardo entre bit y bit********************** Dly_bit movlw 0x1D ;se hace un retardo de 833us que es el tiempo que se tarda en transmitir ;un bit a 9600 baudios movwf Dlycnt goto Dly ;salto a la rutina de temorización ;********************Temporizador de retardo del bit de inicio********************** Dly_Ini movlw 0x08 ;retardo equivalente a la mitad del tiempo que tarda entre bit y bit movwf Dlycnt goto Dly ;salto a la rutina de temporización ;*********************Rutina de temporización**************************************** Dly decfsz Dlycnt,f ;decrementa el contador de temporización, si el resultado es 0 salta goto Dly ;si es 1 vuelve a decrementar return ;si es 0 regresa a donde se hizo el salto end