Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- _7SEG_1 DATA 030H
- _7SEG_2 DATA 031H
- _7SEG_3 DATA 032H
- _7SEG_4 DATA 033H
- _7SEG_5 DATA 034H
- _7SEG_6 DATA 035H
- _LED DATA 02FH
- _CURRENT DATA 037H
- _LICZNIK_SEKUNDY DATA 039h
- _INDEKS DATA 040H
- ;921600 - 1000ms
- ; x - 50ms
- ;x=46080
- ;65536-46080=19456
- ORG 000H
- _RESET:
- LJMP _INIT
- ORG 0BH
- _PRZERWANIE_T0:
- INC _LICZNIK_SEKUNDY
- MOV TL0, #00000000b
- MOV TH0, #01001100b
- RETI
- ORG 0100H
- _INIT:
- LCALL _7SEG_INIT
- LCALL _TIMER_INIT
- _LOOP:
- LCALL _7SEG_REFRESH
- MOV A, #19d ;ustawia za każdym razem 19 do akumulatora
- SUBB A, _LICZNIK_SEKUNDY ;19-0,19-1,...,19-20 ustawia się bit przeniesienia
- JNC _LOOP
- LCALL _LED_OK_CPL
- INC R0
- MOV _LICZNIK_SEKUNDY, #0d
- CLR CY
- LJMP _LOOP
- _TIMER_INIT:
- SETB ET0 ;zezwolenie na przerwanie z Timera0
- SETB EA ;aktywacja systemu przerwan
- ANL TMOD, #11110001b
- ORL TMOD, #00000001b
- MOV TL0, #00000000b
- MOV TH0, #01001100b
- MOV _LICZNIK_SEKUNDY, #0d
- MOV R0, #0d
- CLR TF0 ;flaga przepelnienia ukladu czasowo licznikowego
- SETB TR0 ;uruchomienie pracy ukladu czasowo-licznik
- _7SEG_INIT:
- MOV _LED, #11111111B
- MOV R1, #_7SEG_6
- MOV _INDEKS, #6d
- MOV DPTR, #_WZORCE_CYFR ; Rejestr DPTR sluzy głównie jako wskaznik przy
- ;dostepie do pamieci programu i zewnetrznej
- ;pamieci RAM.
- _FOR:
- MOV A, _INDEKS
- MOVC A, @A+DPTR
- DEC _INDEKS
- MOV @R1, A
- DEC R1
- MOV A, _INDEKS
- JNZ _FOR
- ; od ostatniego zaczynamy
- MOV _CURRENT, #10000000B
- RET
- _7SEG_REFRESH:
- SETB P1.6
- ; pobierz biezacy wskaznik
- MOV A, _CURRENT
- RR A
- MOV _CURRENT, A
- ; wybierz jako aktywny biezacy wskaznik
- MOV DPTR, #0FF30H
- MOVX @DPTR, A
- _IF_LED:
- CJNE A, #01000000B, _IF_W1
- MOV A, _LED
- LJMP _ENDIF
- _IF_W1:
- CJNE A, #00000001B, _IF_W2
- MOV A, _7SEG_6
- LJMP _ENDIF
- _IF_W2:
- CJNE A, #00000010B, _IF_W3
- MOV A, _7SEG_5
- LJMP _ENDIF
- _IF_W3:
- CJNE A, #00000100B, _IF_W4
- MOV A, _7SEG_4
- LJMP _ENDIF
- _IF_W4:
- CJNE A, #00001000B, _IF_W5
- MOV A, _7SEG_3
- LJMP _ENDIF
- _IF_W5:
- CJNE A, #00010000B, _IF_W6
- MOV A, _7SEG_2
- LJMP _ENDIF
- _IF_W6:
- CJNE A, #00100000B, _DEFAULT
- MOV A, _7SEG_1
- LJMP _ENDIF
- _DEFAULT:
- NOP
- _ENDIF:
- NOP
- ; Wpisanie do wbufora wyboru danych cyferki
- MOV DPTR, #0FF38H
- MOVX @DPTR, A
- ;wlacz 7seg
- CLR P1.6
- RET
- _LED_OK_CPL:
- CPL _LED.4
- RET
- _WZORCE_CYFR:
- DB 00111111B
- DB 00000110B
- DB 01011011B
- DB 01001111B
- DB 01100110B
- DB 01101101B
- DB 01111101B
- DB 00000111B
- DB 01111111B
- DB 01101111B
- DB 01110111B
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement