Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- LJMP START
- ; LCD registers ----------------------------------
- LCDstatus equ 0FF2EH
- LCDcontrol equ 0FF2CH
- LCDdataWR equ 0FF2DH
- LCDdataRD equ 0FF2FH
- // LCD control bytes ----------------------------------
- #define HOME 0x80 // put curcor to second line
- #define INITDISP 0x38 // LCD init (8-bit mode)
- #define HOM2 0xc0 // put curcor to second line
- #define LCDON 0x0e // LCD nn, cursor off, blinking off
- #define CLEAR 0x01 // LCD display clear
- 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
- P5 EQU 0F8H
- P7 EQU 0DBH
- ORG 0100H
- NEWLINE:
- DEC R6
- MOV A, R6
- JZ CLS
- LCDcntrlWR #HOM2
- MOV R7, #010H
- RET
- CLS:
- LCDcntrlWR #CLEAR
- MOV R7, #010H
- MOV R6, #02H
- RET
- WAIT:
- ; przepisanie 0F do aku w celu uaktywnienia wszystkich wierszy
- MOV R0,#0FH
- MOV A,R0
- ; aktywacja przez zapisanie do portu
- MOV P5,A
- ; zczytanie zawartosci portu
- MOV A,P7
- ; sprawdzenie krtory wiersz zostal aktywowany
- ANL A,R0
- ; zapamietanie wartosci aku
- MOV R2,A
- ; usuniecie flagi przeniesien
- CLR C
- ; odejmowanie z przeniesieniem
- SUBB A,R0
- ; jezeli ktorykolwiek wiersz jest aktywny to wracamy na gore
- ; poniewaz przycisk nie zostal jeszcze puszczony
- JNZ WAIT
- RET
- START:
- MOV R7, #010H
- MOV R6, #02H
- init_LCD
- ;1
- MOV DPTR, #8077H
- MOV A,#049
- MOVX @DPTR,A
- ;2
- MOV DPTR, #807BH
- MOV A, #050
- MOVX @DPTR, A
- ;3
- MOV DPTR, #807DH
- MOV A, #051
- MOVX @DPTR, A
- ;A
- MOV DPTR, #807EH
- MOV A, #065
- MOVX @DPTR, A
- ;-------------------------------
- ;4
- MOV DPTR, #80B7H
- MOV A, #052
- MOVX @DPTR, A
- ;5
- MOV DPTR, #80BBH
- MOV A, #053
- MOVX @DPTR, A
- ;6
- MOV DPTR, #80BDH
- MOV A, #054
- MOVX @DPTR, A
- ;B
- MOV DPTR, #80BEH
- MOV A, #066
- MOVX @DPTR, A
- ;-------------------------------
- ;7
- MOV DPTR, #80D7H
- MOV A, #055
- MOVX @DPTR, A
- ;8
- MOV DPTR, #80DBH
- MOV A, #056
- MOVX @DPTR, A
- ;9
- MOV DPTR, #80DDH
- MOV A, #057
- MOVX @DPTR, A
- ;C
- MOV DPTR, #80DEH
- MOV A, #067
- MOVX @DPTR, A
- ;-------------------------------
- ;*
- MOV DPTR, #80E7H
- MOV A, #042
- MOVX @DPTR, A
- ;0
- MOV DPTR, #80EBH
- MOV A, #048
- MOVX @DPTR, A
- ;#
- MOV DPTR, #80EDH
- MOV A, #035
- MOVX @DPTR, A
- ;D
- MOV DPTR, #80EEH
- MOV A, #068
- MOVX @DPTR, A
- LJMP W1
- W1:
- MOV R0,#7FH
- MOV A,R0
- MOV P5,A
- MOV A,P7
- ANL A,R0
- MOV R2,A
- CLR C
- SUBB A,R0
- JZ W2
- MOV A,R2
- MOV DPH, #80H
- MOV DPL, A
- MOVX A, @DPTR
- MOV R3, A
- CALL WAIT
- MOV A, R3
- LCDcharWR
- MOV R5, A
- DEC R7
- MOV A, R7
- JNZ skipNewLineW1
- call NEWLINE
- skipNewLineW1:
- MOV A,R5
- MOV P1,A
- W2:
- MOV R0,#0BFH
- MOV A,R0
- MOV P5,A
- MOV A,P7
- ANL A,R0
- MOV R2,A
- CLR C
- SUBB A,R0
- JZ W3
- MOV A,R2
- MOV DPH, #80H
- MOV DPL, A
- MOVX A, @DPTR
- MOV R3, A
- CALL WAIT
- MOV A, R3
- LCDcharWR
- MOV R5, A
- DEC R7
- MOV A, R7
- JNZ skipNewLineW2
- call NEWLINE
- skipNewLineW2:
- MOV A,R5
- MOV P1,A
- jmp omin
- miedzyladowanie:
- jmp W1
- omin:
- W3:
- MOV R0,#0DFH
- MOV A,R0
- MOV P5,A
- MOV A,P7
- ANL A,R0
- MOV R2,A
- CLR C
- SUBB A,R0
- JZ W4
- MOV A,R2
- MOV DPH, #80H
- MOV DPL, A
- MOVX A, @DPTR
- MOV R3, A
- CALL WAIT
- MOV A, R3
- LCDcharWR
- MOV R5, A
- DEC R7
- MOV A, R7
- JNZ skipNewLineW3
- call NEWLINE
- skipNewLineW3:
- MOV A,R5
- MOV P1,A
- W4:
- MOV R0,#0EFH
- MOV A,R0
- MOV P5,A
- MOV A,P7
- ANL A,R0
- MOV R2,A
- CLR C
- SUBB A,R0
- JZ miedzyladowanie
- MOV A,R2
- MOV DPH, #80H
- MOV DPL, A
- MOVX A, @DPTR
- MOV R3, A
- CALL WAIT
- MOV A, R3
- LCDcharWR
- MOV R5, A
- DEC R7
- MOV A, R7
- JNZ skipNewLineW4
- call NEWLINE
- skipNewLineW4:
- MOV A,R5
- MOV P1,A
- JMP W1
- NOP
- NOP
- NOP
- JMP $
- END START
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement