Advertisement
Electgpl

8051 - Generador 50Hz y Muestra Cuenta del Timer por INT0

Jun 20th, 2017
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;-------------------------------------------------------------------------------------
  2. ;Programa que realiza el toggle de una salida a 50Hz, si entra una interrupción
  3. ;externa se mostrara el valor alto y bajo de la cuenta del timer en ese momento
  4. ;en los puertos P0 y P1.    
  5. ;
  6. ;                Registro IE      
  7. ; EA | -- | -- | ES | ET1 | EX1 | ET0 | EX0 |  
  8. ;  0    0    0    0     0     0     0     1  
  9. ;  
  10. ;                Registro IP      
  11. ; -- | -- | PT2 | PS | PT1 | PX1 | PT0 | PX0 |  
  12. ;  0    0     0    0     0     0     0     0    
  13. ;
  14. ;                Registro TCON      
  15. ; TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |  
  16. ;  0     0     0     0     0     0     0     1  
  17. ;
  18. ;NOTA: TiempoOscilador: fXLS/Div = 12MHz/12=1us
  19. ;Valor del delay Tiempo[us]/TiempoOscilador[us]=10ms/1us=10000
  20. ;Calculando TLO y THO: 65536-10000=55536 -> D8F0
  21. ;
  22. ;                Registro TMOD      
  23. ; -------TIMER1--------|--------TIMER0--------|
  24. ; GATE | C/T | M1 | M0 | GATE | C/T | M1 | M0 |  
  25. ;   0     0    0    0      0     0    0    1    
  26. ;
  27. ; Modo  M1  M0
  28. ;   0   0   0   13 bit Timer
  29. ;   1   0   1   16 bit Timer
  30. ;   2   1   0   8 bit Auto-Reload
  31. ;   3   1   1   Split Timer
  32. ;                
  33. ;Archivo: gen50HzEXTINT0.s03
  34. ;Fecha de realización: 19/06/2017
  35. ;Autor: Sebastian Caccavallo - electgpl.blogspot.com.ar
  36. ;Modificación:
  37. ;-------------------------------------------------------------------------------------
  38.             ORG     0000H       ;Dirección del origen del programa
  39.             JMP     SETUP       ;Salta al Inicio del programa
  40. ;            
  41.             ORG     0003H       ;Dirección de interrupción externa INT0
  42.             JMP     EXT_INT0    ;Salta a subrutina de interrupción
  43. ;            
  44. SETUP:      MOV     TMOD,#01H   ;Configuramos TMOD con 1 (TMR0 - Modo 0) 16bits
  45.             MOV     TCON,#01H   ;Configura IT0 externa por flanco
  46.             MOV     IE,#01H     ;Configura EX0 Interrupción Externa 0
  47.             MOV     IP,#00H     ;Des-habilita prioridad de interrupt
  48.             SETB    EA          ;Habilita interrupción global          
  49. ;            
  50. LOOP:       MOV     TL0,#0F0H   ;Configuramos TL0 con F0h
  51.             MOV     TH0,#0D8H   ;Configuramos TH0 con D8h  
  52.             SETB    TR0         ;Start Timer
  53. ESPERA:     JNB     TF0,ESPERA  ;Espera al flag TF0=1 (espera que se desborde)
  54.             CLR     TR0         ;Stop Timer
  55.             CLR     TF0         ;Borra flag TF0                  
  56.             CPL     P2.2        ;Toggle en la salida P2.2
  57.             JMP     LOOP        ;Vuelve a iniciar el Loop de forma indeterminada
  58.  
  59. EXT_INT0:   MOV     P0,TL0      ;Muestra el valor actual de la cuenta TL0 en P0
  60.             MOV     P1,TH0      ;Muestra el valor actual de la cuenta TH0 en P1
  61.             RETI                ;Retorno de interrupción
  62. ;            
  63.             END                 ;Fin del programa
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement