Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;************************************************
- ;PRZYKLAD 1 - TIMERY
- ;************************************************
- LED EQU P1.7
- BUZZER EQU P1.5
- TIME EQU 30H
- ;********* Ustawienia dla TIMEROW *********
- ;TIMER 0
- TIM0 EQU 1
- TH0_SET EQU 256-180 ;wartosc poczatkowa rej. TH0
- TL0_SET EQU 0 ; wartosc poczatkowa rej. TL0
- ;**************************************
- LJMP START
- ;********* procedura obslugi przerwania od Timera 0 *********
- ORG 0BH
- MOV TH0,#TH0_SET ;TH0 na 50ms
- MOV R7,TIME ; W KOMORCE TIME LICZY SIE INTERWALY 50 MS
- DJNZ R7,NO_1SEK ;SKOK JEZELI NIE minELa 1 sek
- CPL LED ;MINELA SEKUNDA, ZMIANA STANU diody TEST
- MOV R7,#20 ;LADOWANIE WARTOSCI POCZATKOWEJ LICZNIKA
- ;INTERWALOW
- INC R3
- ;20*50ms=1s
- XCH A,R6
- MOV A,R3
- CJNE A,#00111100B,NO_MIN
- INC R2
- MOV R3,#0
- NO_MIN:
- LCALL LCD_CLR
- MOV A,R2
- LCALL WRITE_HEX
- ;MOV A,#A3H
- ;LCALL WRITE_DATA
- MOV A,R3
- LCALL WRITE_HEX
- NO_1SEK:
- XCH A,R6
- MOV TIME,R7
- RETI ;WYJSCIE Z PROCEDURY OBSLUGI PRZERWANIA
- ;**************************************
- ORG 100H
- START:
- ;USTAWIENIE WATRTOSCI POCZATKOWYCH
- MOV R2,#0
- MOV R3,#0 ;REJESTROW TIMERA I URUCHOMIENIE
- ;ZLICZANIA
- MOV TMOD,#TIM0 ;TRYB :Timer 0 liczy czas
- MOV TH0,#TH0_SET ;Timer 0 na 50ms
- MOV TL0,#TL0_SET
- SETB TR0 ;start Timera 0
- MOV TIME,#20 ; czas 20*50ms=1s
- SETB ET0 ;wlacz zezwolenie na
- ;przerwanie od Timera 0
- LCALL LCD_CLR
- SETB EA ;wlacz zezwolenie ogolne
- ;na przerwania
- LOOP:
- CALL DELAY_MS
- MOV A,R3
- MOV R5,#0
- CJNE A,#0,L0
- MOV R5,#1
- L0:
- CJNE A,#1EH,L1
- MOV R5,#1
- L1:
- MOV A,R5
- CJNE A,#01H,LOOP
- CPL BUZZER
- MOV A,#5 ;czekaj czas 10*100ms=1s
- LCALL DELAY_100MS ;podprogram z EPROMu
- CPL BUZZER
- SJMP LOOP
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement