Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;************************************************
- ;LEKCJA 12 - SYSTEM PRZERWAŃ 8051
- ;PRZYKŁAD 2 - TIMERY
- ;************************************************
- LED EQU P1.7
- ;******* Pamięć wewnętrzna RAM ********
- TIME EQU 30H
- TEMP EQU 31H
- LOCK EQU 1
- ;********* Ustawienie TIMERów *********
- ;TIMER 0
- T0_G EQU 0 ;GATE
- T0_C EQU 0 ;COUNTER/-TIMER
- T0_M EQU 1 ;MODE (0..3)
- TIM0 EQU T0_M+T0_C*4+T0_G*8
- ;TIMER 1
- T1_G EQU 0 ;GATE
- T1_C EQU 0 ;COUNTER/-TIMER
- T1_M EQU 0 ;MODE (0..3)
- TIM1 EQU T1_M+T1_C*4+T1_G*8
- TMOD_SET EQU TIM0+TIM1*16
- ;50[ms] = 50 000[ŠS]*(11.0592[MHz]/12) =
- ; = 46 080 cykli = 180 * 256
- TH0_SET EQU 256-180
- TL0_SET EQU 0
- ;**************************************
- LJMP START
- ;********* Przerwanie Timer 0 *********
- ORG 0BH
- PUSH PSW ;przechowanie rejestrów
- PUSH ACC ;na stosie
- ADD A,TEMP
- MOV 5,TEMP
- MOV TH0,#TH0_SET ;TH0 na 50ms
- DJNZ TIME,NO_1SEK ;czy minęła 1 sek
- ;CPL LED ;mruganie diody TEST
- LCALL LCD_CLR
- MOV A,TEMP
- DEC A
- LCALL WRITE_HEX
- DJNZ TEMP,WYSWIETL
- CLR LED
- CLR TR0
- CLR LOCK
- WYSWIETL:
- MOV TIME,#20 ;odczekaj kolejny czas
- ;20*50ms=1s
- NO_1SEK:
- POP ACC ;odtworzenie rejestrów
- POP PSW
- RETI
- ;**************************************
- ORG 100H
- CLR LOCK
- START:
- JB LOCK,START
- LCALL WAIT_KEY
- CJNE A,#01H,DWA
- SETB LED
- LJMP MAIN
- DWA:
- CJNE A,#02H,START
- CLR LED
- MAIN:
- SETB LOCK
- MOV TEMP,#05
- MOV TMOD,#TMOD_SET ;Timer 0 liczy czas
- MOV TH0,#TH0_SET ;Timer 0 na 50ms
- MOV TL0,#TL0_SET
- SETB TR0 ;start Timera 0
- MOV TIME,#20 ;odczekaj czas 20*50ms=1s
- SETB EA ;włącz zezwolenie ogólne
- ;na przerwania
- SETB ET0 ;włącz zezwolenie na
- ;przerwanie od Timera 0
- LCALL LCD_CLR
- LJMP START
- SJMP $
Add Comment
Please, Sign In to add comment