Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- LJMP START
- P5 EQU 0F8H
- P7 EQU 0DBH
- LCDstatus equ 0FF2EH
- LCDcontrol equ 0FF2CH
- LCDdataWR equ 0FF2DH
- RTCxs equ 0FF00H
- RTCsx equ 0FF01H
- RTCxm equ 0FF02H
- RTCmx equ 0FF03H
- RTCxh equ 0FF04H
- RTChx equ 0FF05H
- RTCpd equ 0FF0DH
- #define HOME 0x80
- #define INITDISP 0x38
- #define HOM2 0xc0
- #define LCDON 0x0e
- #define CLEAR 0x01
- ORG 000BH
- MOV TH0, #00H //do zmiany
- MOV TL0, #00H //do zmiany
- DEC R0
- RETI
- ORG 0100H //program glowny
- LCDcntrlWR MACRO x
- LOCAL loop
- loop:
- MOV DPTR,#LCDstatus
- MOVX A,@DPTR
- JB ACC.7,loop ; check if LCD busy
- MOV DPTR,#LCDcontrol ; write to LCD control
- MOV A, x
- MOVX @DPTR,A
- ENDM
- LCDcharWR MACRO
- LOCAL loop1,loop2
- PUSH ACC
- loop1: MOV DPTR,#LCDstatus
- MOVX A,@DPTR
- JB ACC.7,loop1 ; check if LCD busy
- loop2: MOV DPTR,#LCDdataWR ; write data to LCD
- POP ACC
- MOVX @DPTR,A
- ENDM
- init_LCD MACRO
- LCDcntrlWR #INITDISP
- LCDcntrlWR #CLEAR
- LCDcntrlWR #LCDON
- ENDM
- disp_nibble MACRO
- movx A,@DPTR
- anl A,#0Fh ; select 4-bits
- orl A,#30H ; change to ASCII
- LCDcharWR;
- ENDM
- RTC_PROC SEGMENT CODE
- RSEG RTC_PROC
- MOV A, R1
- SUBB A, #36H
- JZ deci4
- JMP koniec
- deci4:
- MOV R1, #30H
- MOV R2, #30H
- MOV R3, #30H
- MOV R4, #30H
- koniec:
- RET
- _Nowa2:
- MOV A, B;
- JNZ cos1
- LCDcntrlWR #CLEAR
- MOV A, R1
- LCDcharWR
- MOV A, R2
- LCDcharWR
- MOV A, #3AH
- LCDcharWR
- MOV A, R3
- LCDcharWR
- MOV A, R4
- LCDcharWR
- JMP koniec2
- cos1:
- DEC A
- JNZ cos2
- cos2:
- DEC A
- JNZ koniec2
- LCDcntrlWR #CLEAR
- MOV R1, #30H
- MOV R2, #30H
- MOV R3, #30H
- MOV R4, #30H
- koniec2:
- RET
- _CZEKAJ:
- mov R1, #03Fh
- TAM2: mov R2, #0FFH
- TU2: DJNZ R2, TU2
- DJNZ R1, TAM2
- RET
- START:
- MOV DPH, #80H
- MOV DPL, #77H
- MOV A, #31H
- MOVX @DPTR, A
- MOV DPH, #80H
- MOV DPL, #7BH
- MOV A, #32H
- MOVX @DPTR, A
- MOV DPH, #80H
- MOV DPL, #7DH
- MOV A, #33H
- MOVX @DPTR, A
- MOV DPH, #80H
- MOV DPL, #7EH
- MOV A, #41H
- MOVX @DPTR, A
- MOV DPH, #80H
- MOV DPL, #0B7H
- MOV A, #34H
- MOVX @DPTR, A
- MOV DPH, #80H
- MOV DPL, #0BBH
- MOV A, #35H
- MOVX @DPTR, A
- MOV DPH, #80H
- MOV DPL, #0BDH
- MOV A, #36H
- MOVX @DPTR, A
- MOV DPH, #80H
- MOV DPL, #0BEH
- MOV A, #42H
- MOVX @DPTR, A
- MOV DPH, #80H
- MOV DPL, #0D7H
- MOV A, #37H
- MOVX @DPTR, A
- MOV DPH, #80H
- MOV DPL, #0DBH
- MOV A, #38H
- MOVX @DPTR, A
- MOV DPH, #80H
- MOV DPL, #0DDH
- MOV A, #39H
- MOVX @DPTR, A
- MOV DPH, #80H
- MOV DPL, #0DEH
- MOV A, #43H
- MOVX @DPTR, A
- MOV DPH, #80H
- MOV DPL, #0E7H
- MOV A, #2AH
- MOVX @DPTR, A
- MOV DPH, #80H
- MOV DPL, #0EBH
- MOV A, #30H
- MOVX @DPTR, A
- MOV DPH, #80H
- MOV DPL, #0EDH
- MOV A, #23H
- MOVX @DPTR, A
- MOV DPH, #80H
- MOV DPL, #0EEH
- MOV A, #44H
- MOVX @DPTR, A
- MOV R6, #0H
- MOV R7, #0H
- MOV R4, #30H
- MOV R3, #30H
- MOV R1, #30H
- MOV R2, #30H
- MOV R5, #0
- MOV B, #0
- init_LCD
- MOV TMOD, #01H
- MOV TH0, #00H
- MOV TL0, #00H
- SETB TR0
- MOV IE, #82H
- MOV A, #00H
- DALEJ: MOV R0, #0FH
- CZEKAM: MOV A, R0
- JNZ CZEKAM
- MOV R5, A;
- ACALL _Nowa
- ACALL _Nowa2
- MOV A, R5;
- CPL A
- NEXT1:
- MOV R6, #7FH
- MOV A, R6
- MOV P5, A
- MOV A, P7
- ANL A, R6 ;W AKUMULATORZE JEST TO CO WPISALISMY DO R0
- MOV R7, A
- CLR C
- SUBB A, R6
- JZ DALEJ ;JEZELI '0' PRZESKAKUJEMY DO KOLEJNEGO BLOKU
- MOV A, R7 ; JEZELI NIE WYSZLO '0' TO PRZYWRACAMY WARTOSC AKUMULATORA
- lol2:
- MOV A, P7
- ANL A, R6
- CLR C
- SUBB A, R6
- JNZ lol2
- ACALL _Nowa
- ACALL _Nowa2
- MOV A, R7 ; JEZELI NIE WYSZLO '0' TO PRZYWRACAMY WARTOSC AKUMULATORA
- MOV DPH, #80H
- MOV DPL,A
- MOVX A,@DPTR
- MOV P1, A
- SUBB A, #31H
- MOV B, A;
- JMP DALEJ
- NOP
- NOP
- NOP
- JMP $
- END START
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement