Advertisement
Electgpl

8051 - ADC a 3 dígitos multiplexado

Jul 24th, 2017
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;-------------------------------------------------------------------------------------
  2. ;Programa que muestra el valor del P2 en 3 display de 7 segmentos multiplexados
  3. ;Se puede reemplazar el P2 por un ADC de 8 bit para mostrar de 0 a 255. con 8051 @ 8952.                    
  4. ;Archivo: ADC7SegMux.s03
  5. ;Fecha de realización: 24/07/2017
  6. ;Autor: Sebastian Caccavallo - electgpl.blogspot.com.ar
  7. ;Modificación:
  8. ;-------------------------------------------------------------------------------------
  9.             ORG     0000H           ;Dirección del origen del programa
  10.             JMP     SETUP           ;Salta al Inicio del programa
  11. ;        
  12. SETUP:      CLR     P1              ;Inicializa P1
  13.             CLR     P3              ;Inicializa P3
  14.             MOV     DPTR,#TABLE
  15. ;                        
  16. LOOP:       MOV     P3,#00000001B   ;Enciende Display x1              
  17.             CALL    DEC2BCD         ;Llama a rutina de conversión DEC a BCD
  18.             MOV     A,R2            ;Carga acum con el valor a buscar en tabla
  19.             MOVC    A,@A+DPTR       ;Trae el valor cargado en acum desde la tabla
  20.             MOV     P1,A            ;Muestra el valor del acum en el puerto
  21.             CALL    DELAY           ;Llama a la demora
  22.             MOV     P3,#00000010B   ;Enciende Display x10      
  23.             CALL    DEC2BCD         ;Llama a rutina de conversión DEC a BCD
  24.             MOV     A,R1            ;Carga acum con el valor a buscar en tabla
  25.             MOVC    A,@A+DPTR       ;Trae el valor cargado en acum desde la tabla
  26.             MOV     P1,A            ;Muestra el valor del acum en el puerto
  27.             CALL    DELAY           ;Llama a la demora
  28.             MOV     P3,#00000100B   ;Enciende Display x100  
  29.             CALL    DEC2BCD         ;Llama a rutina de conversión DEC a BCD
  30.             MOV     A,R0            ;Carga acum con el valor a buscar en tabla
  31.             MOVC    A,@A+DPTR       ;Trae el valor cargado en acum desde la tabla
  32.             MOV     P1,A            ;Muestra el valor del acum en el puerto
  33.             CALL    DELAY           ;Llama a la demora              
  34.             JMP     LOOP            ;Vuelve a comenzar el ciclo
  35. ;      
  36. DEC2BCD:    MOV     A,P2            ;Carga acum con el valor del ADC del puerto P2
  37.             MOV     B,#10D          ;Carga B con 10
  38.             DIV     AB              ;Divide A/B=A, Resto en B
  39.             MOV     R0,B            ;Mueve Resto B a R0
  40.             MOV     B,#10D          ;Carga B con 10
  41.             DIV     AB              ;Divide A/B=A, Resto en B
  42.             MOV     R1,B            ;Mueve Resto B a R1
  43.             MOV     R2,A            ;Mueve Resultado A a R2      
  44.             RET                     ;Retorna subrutina
  45. ;
  46. DELAY:      MOV     R7,#255         ;Carga R7 con 255
  47.             DJNZ    R7,$            ;Decremento R7
  48.             RET                     ;Retorna subrutina
  49. ;
  50. TABLE:      DB      00111111B       ;Numero 0 en Display de 7 segmentos  
  51.             DB      00000110B       ;Numero 1 en Display de 7 segmentos
  52.             DB      01011011B       ;Numero 2 en Display de 7 segmentos
  53.             DB      01001111B       ;Numero 3 en Display de 7 segmentos
  54.             DB      01100110B       ;Numero 4 en Display de 7 segmentos
  55.             DB      01101101B       ;Numero 5 en Display de 7 segmentos
  56.             DB      01111101B       ;Numero 6 en Display de 7 segmentos
  57.             DB      00000111B       ;Numero 7 en Display de 7 segmentos
  58.             DB      01111111B       ;Numero 8 en Display de 7 segmentos
  59.             DB      01101111B       ;Numero 9 en Display de 7 segmentos        
  60. ;
  61.             END                     ;Fin del programa
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement