Guest User

Untitled

a guest
Aug 20th, 2018
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.52 KB | None | 0 0
  1. ;************************************************
  2. ;LEKCJA 12 - SYSTEM PRZERWAŃ 8051
  3. ;PRZYKŁAD 2 - TIMERY
  4. ;************************************************
  5.  
  6. LED EQU P1.7
  7.  
  8. ;******* Pamięć wewnętrzna RAM ********
  9. TIME EQU 30H
  10. TEMP EQU 31H
  11. LOCK EQU 1
  12.  
  13.  
  14. ;********* Ustawienie TIMERów *********
  15. ;TIMER 0
  16. T0_G EQU 0 ;GATE
  17. T0_C EQU 0 ;COUNTER/-TIMER
  18. T0_M EQU 1 ;MODE (0..3)
  19. TIM0 EQU T0_M+T0_C*4+T0_G*8
  20. ;TIMER 1
  21. T1_G EQU 0 ;GATE
  22. T1_C EQU 0 ;COUNTER/-TIMER
  23. T1_M EQU 0 ;MODE (0..3)
  24. TIM1 EQU T1_M+T1_C*4+T1_G*8
  25.  
  26. TMOD_SET EQU TIM0+TIM1*16
  27.  
  28. ;50[ms] = 50 000[ŠS]*(11.0592[MHz]/12) =
  29. ; = 46 080 cykli = 180 * 256
  30. TH0_SET EQU 256-180
  31. TL0_SET EQU 0
  32. ;**************************************
  33.  
  34. LJMP START
  35.  
  36. ;********* Przerwanie Timer 0 *********
  37. ORG 0BH
  38. PUSH PSW ;przechowanie rejestrów
  39. PUSH ACC ;na stosie
  40.  
  41. ADD A,TEMP
  42.  
  43. MOV 5,TEMP
  44.  
  45. MOV TH0,#TH0_SET ;TH0 na 50ms
  46. DJNZ TIME,NO_1SEK ;czy minęła 1 sek
  47.  
  48. ;CPL LED ;mruganie diody TEST
  49.  
  50. LCALL LCD_CLR
  51. MOV A,TEMP
  52. DEC A
  53.  
  54.  
  55. LCALL WRITE_HEX
  56. DJNZ TEMP,WYSWIETL
  57.  
  58. CLR LED
  59. CLR TR0
  60. CLR LOCK
  61.  
  62. WYSWIETL:
  63.  
  64.  
  65. MOV TIME,#20 ;odczekaj kolejny czas
  66. ;20*50ms=1s
  67. NO_1SEK:
  68. POP ACC ;odtworzenie rejestrów
  69. POP PSW
  70. RETI
  71.  
  72. ;**************************************
  73.  
  74. ORG 100H
  75.  
  76. CLR LOCK
  77.  
  78. START:
  79. JB LOCK,START
  80.  
  81. LCALL WAIT_KEY
  82.  
  83.  
  84. CJNE A,#01H,DWA
  85. SETB LED
  86. LJMP MAIN
  87.  
  88.  
  89. DWA:
  90. CJNE A,#02H,START
  91. CLR LED
  92.  
  93.  
  94. MAIN:
  95.  
  96. SETB LOCK
  97.  
  98. MOV TEMP,#05
  99.  
  100. MOV TMOD,#TMOD_SET ;Timer 0 liczy czas
  101. MOV TH0,#TH0_SET ;Timer 0 na 50ms
  102. MOV TL0,#TL0_SET
  103. SETB TR0 ;start Timera 0
  104. MOV TIME,#20 ;odczekaj czas 20*50ms=1s
  105.  
  106. SETB EA ;włącz zezwolenie ogólne
  107. ;na przerwania
  108. SETB ET0 ;włącz zezwolenie na
  109. ;przerwanie od Timera 0
  110.  
  111.  
  112.  
  113. LCALL LCD_CLR
  114. LJMP START
  115. SJMP $
Add Comment
Please, Sign In to add comment