Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- LJMP START
- P5 EQU 0F8H
- P7 EQU 0DBH
- ;REJESTRY LCD
- LCDstatus equ 0FF2EH
- LCDcontrol equ 0FF2CH
- LCDdataWR equ 0FF2DH
- LCDdataRD equ 0FF2FH
- ;LCD CONTROL BYTES
- #define HOME 0x80
- #define INITDISP 0x38
- #define HOM2 0xc0
- #define LCDON 0x0e
- #define CLEAR 0x01
- ORG 0100H
- putstrLCD:
- CLR A
- MOVC A,@A+DPTR
- JZ EXIT
- PUSH DPH
- PUSH DPL
- CALL putcharLCD
- POP DPL
- POP DPH
- INC DPTR
- SJMP putstrLCD
- EXIT:RET
- LCDcntrlWR MACRO x
- LOCAl loop
- loop:
- MOV DPTR,#LCDstatus
- MOVX A,@DPTR
- JB ACC.7,loop
- MOV DPTR,#LCDcontrol
- MOV A,x
- MOVX @DPTR,A
- ENDM
- LCDcharWR MACRO
- LOCAL loop1, charDoNowej, do_drugiej, od_nowa
- PUSH ACC
- MOV A, R4
- MOV B, #32
- DIV AB
- MOV A, B
- JZ od_nowa
- MOV A, R4
- MOV B, #16
- DIV AB
- MOV A, B
- JZ do_drugiej
- JMP charDoNowej
- do_drugiej: ;przenoszenie kursora do drugiej linii
- LCDcntrlWR #HOM2
- JMP charDoNowej
- od_nowa: ;czyszczenie wyswietlacza, kursor znow w 1 linii
- LCDcntrlWR #HOME
- LCDcntrlWR #CLEAR
- MOV R4, #0
- JMP charDoNowej
- charDoNowej: ;wstawienie znaku ktory wywolal zmiane linii na 1 pozycje nowej linii
- POP ACC
- PUSH DPL
- PUSH DPH
- PUSH ACC
- loop1: ;wypisanie znaku na wyswietlacz
- MOV DPTR, #LCDstatus
- MOVX A, @DPTR
- JB ACC.7, loop1
- MOV DPTR, #LCDdataWR
- POP ACC
- MOVX @DPTR, A
- POP DPH
- POP DPL
- INC R4
- ENDM
- init_LCD MACRO
- LCDcntrlWR #INITDISP
- LCDcntrlWR #CLEAR
- LCDcntrlWR #LCDON
- ENDM
- first_line MACRO
- LCDcntrlWR #HOME
- ENDM
- second_line MACRO
- LCDcntrlWR #HOM2
- ENDM
- putcharLCD:
- LCDcharWR
- norep: ;funckja odpowiedzialna za brak repetycji - dziala na zasadzie martwej petli (a nawet dwoch)
- PUSH ACC
- MOV A, R1
- MOV R1, #0FFH
- loop1:
- MOV R2, #0FFH
- loop2:
- DJNZ R2, loop2
- DJNZ R1, loop1
- MOV R1, A
- POP ACC
- RET
- START:
- init_LCD
- 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 R4, #0
- MOV R5, #0
- PETLA:
- MOV R0, #7FH
- MOV A, R0
- MOV P5, A
- MOV A, P7
- ANL A, R0 ;W AKUMULATORZE JEST TO CO WPISALISMY DO R0
- MOV R1, A
- CLR C
- SUBB A, R0
- JZ NEXT1 ;JEZELI '0' PRZESKAKUJEMY DO KOLEJNEGO BLOKU
- call norep
- MOV A, R1 ; JEZELI NIE WYSZLO '0' TO PRZYWRACAMY WARTOSC AKUMULATORA
- MOV DPH, #80H
- MOV DPL,A
- MOVX A,@DPTR
- LCDcharWR
- MOV P1, A
- PETLA2:
- JZ PETLA
- NEXT1:
- MOV R0, #0BFH
- MOV A, R0
- MOV P5, A
- MOV A, P7
- ANL A, R0 ;W AKUMULATORZE JEST TO CO WPISALISMY DO R0
- MOV R1, A
- CLR C
- SUBB A, R0
- JZ NEXT2 ;JEZELI '0' PRZESKAKUJEMY DO KOLEJNEGO BLOKU
- call norep
- MOV A, R1 ; JEZELI NIE WYSZLO '0' TO PRZYWRACAMY WARTOSC AKUMULATORA
- MOV DPH, #80H
- MOV DPL, A
- MOVX A, @DPTR
- LCDcharWR
- MOV P1, A
- PETLA22:
- JZ PETLA2
- NEXT2:
- MOV R0, #0DFH
- MOV A, R0
- MOV P5, A
- MOV A, P7
- ANL A, R0 ;W AKUMULATORZE JEST TO CO WPISALISMY DO R0
- MOV R1, A
- CLR C
- SUBB A, R0
- JZ NEXT3 ;JEZELI '0' PRZESKAKUJEMY DO KOLEJNEGO BLOKU
- call norep
- MOV A, R1 ; JEZELI NIE WYSZLO '0' TO PRZYWRACAMY WARTOSC AKUMULATORA
- MOV DPH, #80H
- MOV DPL, A
- MOVX A, @DPTR
- LCDcharWR
- MOV P1, A
- PETLA12:
- JZ PETLA22
- NEXT3:
- MOV R0, #0EFH
- MOV A, R0
- MOV P5, A
- MOV A, P7
- ANL A, R0 ;W AKUMULATORZE JEST TO CO WPISALISMY DO R0
- MOV R1, A
- CLR C
- SUBB A, R0
- JZ PETLA12 ;JEZELI '0' PRZESKAKUJEMY DO KOLEJNEGO BLOKU
- call norep
- MOV A, R1 ; JEZELI NIE WYSZLO '0' TO PRZYWRACAMY WARTOSC AKUMULATORA
- MOV DPH, #80H
- MOV DPL, A
- MOVX A, @DPTR
- LCDcharWR
- MOV P1, A
- JMP PETLA
- NOP
- NOP
- NOP
- JMP $
- END START
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement