Advertisement
Electgpl

8051 - RECIBE POR UART Y GUARDA EN TABLA 40H

Jun 14th, 2017
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;-------------------------------------------------------------------------------------
  2. ;Programa que recibe datos por UART mediante interrupción y lo guarda en una tabla
  3. ;Se requiere de un cristal de 11.059MHz para el baudrate de 9600bps. con 8051 @ 8952.
  4. ;Utilización de UART en Modo 1 y Timer 1 en Modo 2.                      
  5. ;Archivo: RecibeUART40h.s03
  6. ;Fecha de realización: 13/06/2017
  7. ;Autor: Sebastian Caccavallo - electgpl.blogspot.com.ar
  8. ;Modificación:
  9. ;-------------------------------------------------------------------------------------
  10.             ORG     0000H           ;Dirección del Reset      
  11.             JMP     SETUP           ;Salta al Inicio del programa  
  12. ;
  13.             ORG     0023H           ;Dirección de interrupción
  14.             JMP     UARTINT         ;Salta a la interrupción
  15. ;            
  16. SETUP:      MOV     SCON, #50h      ;UART en MODO 1 (8BIT), REN=1
  17.             ORL     TMOD, #20h      ;TIMER 1 en MODO 2
  18.             MOV     TH1, #0FDh      ;9600bps @ 11.059MHz
  19.             MOV     TL1, #0FDh      ;9600bps @ 11.059MHz
  20.             SETB    ES              ;Habilitación de Interrupción Serial
  21.             SETB    EA              ;Habilitación de Interrupciones Globales
  22.             SETB    TR1             ;Activa TIMER 1  
  23.             MOV     DPTR,#40H       ;Cargo 40h en DPTR (Origen de la tabla)  
  24. ;                        
  25. LOOP:       CPL     P1.0            ;Toggle LED en P1.0  
  26.             ACALL   DELAY           ;Rutina de Delay de 1s  
  27.             SJMP    LOOP            ;Loop principal  
  28. ;            
  29. UARTINT:    JNB     RI,UARTINT      ;Espera el dato Serie
  30.             MOV     A,SBUF          ;Mueve el dato del buffer al acumulador    
  31.             CLR     RI              ;Borra el flag de recepción
  32.             MOVX    A,@DPTR         ;Cargo el valor apuntado en el acumulador  
  33.             INC     DPTR            ;Incrementamos DPRT
  34.             RETI                    ;Retorno de Interrupción  
  35. ;      
  36. DELAY:      MOV     R7,#6D          ;[2]Cargamos R7 con 6
  37. WAIT1:      MOV     R6,#185D        ;[2]Cargamos R6 con 185  
  38. WAIT2:      MOV     R5,#200D        ;[2]Cargamos R5 con 200
  39. WAIT3:      DJNZ    R5,WAIT3        ;[2]Decrementamos R5 y Salta a WAIT3
  40.             DJNZ    R6,WAIT2        ;[2]Decrementamos R6 y Salta a WAIT2        
  41.             DJNZ    R7,WAIT1        ;[2]Decrementamos R7 y Salta a WAIT1
  42.             RET                     ;[2]Retorno de Subrutina  
  43. ;
  44.             END                     ;Fin del programa
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement