Advertisement
Electgpl

8051 - TABLA UART

Jun 12th, 2017
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;-------------------------------------------------------------------------------------
  2. ;Programa que envía una cadena de caracteres por UART cada vez que recibe
  3. ;un dato por UART, con 8051 @ 8952.
  4. ;El dato que es recibido por la UART es re envidado por la misma.
  5. ;Se requiere de un cristal de 11.059MHz para el baudrate de 9600bps.
  6. ;Utilización de UART en Modo 1 y Timer 1 en Modo 2.  
  7. ;Archivo: Untitled1.s03
  8. ;Fecha de realización: 12/06/2017
  9. ;Autor: Sebastian Caccavallo - electgpl.blogspot.com.ar
  10. ;Modificación:
  11. ;-------------------------------------------------------------------------------------
  12.             ORG 0000H               ;Dirección del origen del programa
  13.             JMP INICIO              ;Salta al Inicio del programa
  14. ;
  15.             ORG 0023H               ;Dirección de interrupción
  16.             JMP UARTINT             ;Salta a la interrupción
  17. ;        
  18. INICIO:     MOV     SCON, #50h      ;UART en MODO 1 (8BIT), REN=1
  19.             ORL     TMOD, #20h      ;TIMER 1 en MODO 2
  20.             MOV     TH1, #0FDh      ;9600bps @ 11.059MHz
  21.             MOV     TL1, #0FDh      ;9600bps @ 11.059MHz
  22.             SETB    ES              ;Habilitación de Interrupción Serial
  23.             SETB    EA              ;Habilitación de Interrupciones Globales
  24.             SETB    TR1             ;Activa TIMER 1                          
  25.             JMP     $               ;Loop cerrado de espera para interrupción  
  26. ;
  27. UARTINT:    MOV     DPTR,#TABLA     ;Puntero a tabla de datos  
  28. SIGUE:      CLR     A               ;Limpiamos el acumulador A
  29.             MOVC    A,@A+DPTR       ;Obtiene el Caracter
  30.             JZ      SALE            ;Si es el último caracter, sale  
  31.             CALL    SEND            ;En caso contrario llama a SEND
  32.             INC     DPTR            ;Incrementa el indice del puntero
  33.             SJMP    SIGUE           ;Sigue recorriendo la cadena
  34. SALE:       CALL    SEND            ;Envía por Serie
  35.             CALL    RECV            ;Recibe por Serie
  36. ;    
  37. ENDINT:     RETI                    ;Retorno de Interrupción
  38. ;
  39. SEND:       MOV     SBUF,A          ;Cargo el dato en Buffer de salida Serie
  40. EOB:        JNB     TI,EOB          ;Envía hasta el ultimo bit    
  41.             CLR     TI              ;Borra el flag de transmisión
  42.             RET                     ;Retorno de subrutina        
  43. ;      
  44. RECV:       JNB     RI,RECV         ;Espera el dato Serie
  45.             MOV     A,SBUF          ;Mueve el dato del buffer al acumulador    
  46.             CLR     RI              ;Borra el flag de recepción
  47.             RET                     ;Retorno de subrutina        
  48. ;                                                        
  49. TABLA:      DB      "UTN INSPT ",0  ;Tabla de 10 datos a enviar por UART
  50. ;
  51.             END                     ;Fin del programa
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement