Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $include (reg52.inc)
- ;-------------------------------------------- Definy
- SDA EQU P1.2
- SCL EQU P1.1
- LED1 EQU P3.7
- LED2 EQU P3.6
- LED3 EQU P3.5
- LED4 EQU P3.4
- OFF EQU P3.3
- LOAD EQU P3.2
- CLOCK EQU P3.1
- DANE EQU P3.0
- ENTER EQU P1.7
- DOWN EQU P1.6
- UP EQU P1.5
- ESCAPE EQU P1.4
- ;-------------------------------------------- Czyszczenie Rejestrow
- MOV R0, #10
- MOV R1, #10
- MOV R2, #0
- MOV R3, #10
- MOV R4, #0
- MOV R5, #10
- CLR OFF
- ACALL SBIT
- ;--------------------------------------------
- MOV A, #11010000B ; Wpisanie do akumulatora adresu układu RTC
- ACALL WYSLIJ ; Wysylanie bajtu
- ACALL ACK ; Potwierdzenie odbioru danych
- ; ...
- MOV A, #00000000B
- ACALL WYSLIJ
- ACALL ACK
- MOV A, #00000000B
- ACALL WYSLIJ
- ACALL ACK
- ACALL NOACK
- ACALL STBIT
- ACALL SBIT
- MOV A, #11010000B
- ACALL WYSLIJ
- ACALL ACK
- MOV A, #00000001B
- ACALL WYSLIJ
- ACALL ACK
- MOV A, #00000000B
- ACALL WYSLIJ
- ACALL ACK
- ACALL NOACK
- ACALL STBIT
- ;--------------------------------------------
- SHOW:
- MOV C, ACC.0 ; Ustawienie akumulatora na 0
- MOV OFF, C
- MOV A, R5
- ACALL WPIS
- MOV A, R1
- ACALL WPIS
- MOV A, R2
- ACALL WPIS
- MOV A, R3
- ACALL WPIS
- CLR LOAD
- SETB LOAD
- ACALL SBIT
- MOV A, #11010000B
- ACALL WYSLIJ
- ACALL ACK
- MOV A, #00000000B
- ACALL WYSLIJ
- ACALL ACK
- ACALL SBIT
- MOV A, #11010001B
- ACALL WYSLIJ
- ACALL ACK
- ACALL ODBIERZ
- MOV R4, A
- ANL A, #00001111B
- ADD A, #10
- MOV R5, A
- MOV A, R4
- ANL A, #11110000B
- SWAP A
- ADD A, #10
- MOV R1, A
- ACALL NOACK
- ACALL STBIT
- ;------------------------------------------------------------
- ACALL SBIT
- MOV A, #11010000B
- ACALL WYSLIJ
- ACALL ACK
- MOV A, #00000001B
- ACALL WYSLIJ
- ACALL ACK
- ACALL SBIT
- MOV A, #11010001B
- ACALL WYSLIJ
- ACALL ACK
- ACALL ODBIERZ
- MOV R4, A
- ANL A, #00001111B
- MOV R2, A
- MOV A, R4
- ANL A, #11110000B
- SWAP A
- ADD A, #10
- MOV R3, A
- ACALL NOACK
- ACALL STBIT
- JNB ESCAPE, SEKUNDY
- SJMP SHOW
- SEKUNDY:
- MOV R5, #20 ;--------------------- Sekundy
- MOV R1, #20
- MOV R2, #20 ;--------------------- Minuty
- MOV R3, #20
- SJMP SHOW
- WPIS: ; Wpis do rejestru
- MOV DPTR, #TABLICA
- MOVC A, @A + DPTR
- MOV R0, #8
- WYSWIETL: ; Wpis do wyswietlacza
- RRC A
- MOV DANE, C
- CLR CLOCK
- SETB CLOCK
- DJNZ R0, WYSWIETL
- RET
- SBIT: ; Bit Startu
- SETB SDA
- SETB SCL
- CLR SDA
- CLR SCL
- RET
- STBIT: ; Bit Stopu
- CLR SDA
- CLR SCL
- SETB SCL
- SETB SDA
- RET
- WYSLIJ: ; Podprogram wysylajacy dane
- MOV R0, #8
- SLOOP:
- RLC A
- MOV SDA, C
- SETB SCL
- CLR SCL
- DJNZ R0, SLOOP
- RET
- ODBIERZ: ; Podprogram odbierajacy dane
- SETB SDA
- MOV R0, #8
- RLOOP:
- MOV C, SDA
- RLC A
- SETB SCL
- CLR SCL
- DJNZ R0, RLOOP
- RET
- ;--------------------------------------------
- ACK:
- SETB SDA
- BACK: JB SDA, BACK
- SETB SCL
- CLR SCL
- RET
- ACKP: ; ACK Procesora
- CLR SDA
- SETB SCL
- CLR SCL
- RET
- NOACK:
- SETB SDA
- SETB SCL
- CLR SCL
- RET
- ; Na wyswietlaczu
- ; Index |
- ; | |
- ;----------------\|/ \|/
- TABLICA:
- DB 040H ;0 0.
- DB 079H ;1 1.
- DB 024H ;2 2.
- DB 030H ;3 3.
- DB 019H ;4 4.
- DB 012H ;5 5.
- DB 002H ;6 6.
- DB 078H ;7 7.
- DB 000H ;8 8.
- DB 010H ;9 9.
- DB 0C0H ;10 0
- DB 0F9H ;11 1
- DB 0A4H ;12 2
- DB 0B0H ;13 3
- DB 099H ;14 4
- DB 092H ;15 5
- DB 082H ;16 6
- DB 0F8H ;17 7
- DB 080H ;18 8
- DB 090H ;19 9
- DB 0FFH ;20 NULL
- DB 0BFH ;21 -
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement