Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;======= interrupt vectors =====================
- LJMP START
- ORG 03h
- LJMP INT0INT ;INT0
- ORG 0Bh
- LJMP T0INT ;T0INT
- ORG 13H
- LJMP INT1INT ;INT1
- ORG 1BH
- LJMP T1INT ;T1INT
- ORG 23h
- LJMP SERINT ;SERINT
- ORG 30H
- ;============== variables ==========
- line01 data 20h
- line23 data 21h
- ;============== interrupts vectors ==========
- INT0INT:
- reti
- INT1INT:
- reti
- T0INT:
- reti
- T1INT:
- reti
- SERINT:
- reti
- ;============== util procedures ==========
- ;==== DELAY1MS ==== wait 1 ms
- ;work only with 0 bank!!! NOT SAVE REGISTERS!!!
- DELAY1MS:
- MOV R2,#28 ;\28 times
- LREX: ;|
- MOV R1,#16 ; \16 times
- DJNZ R1,$ ; /
- DJNZ R2,LREX ;/
- MOV R2,#6 ;\6 times
- DJNZ R2,$ ;/
- RET
- ;==== DELAY ==== wait a R0 ms time
- DELAY:
- PUSH PSW
- push 1
- push 2
- DELAY_LOOP:
- CALL DELAY1MS
- DJNZ ACC,DELAY_LOOP
- pop 2
- pop 1
- POP PSW
- RET
- ;============== scan keyboard ============
- scankeyb:
- push a
- push 7
- mov p1,#0EFh
- mov a,p1
- anl a,#0Fh
- swap A
- mov r7,a
- mov p1,#0DFh
- mov a,p1
- anl a,#0Fh
- orl a,r7
- mov line01,a
- mov p1,#0BFh
- mov a,p1
- anl a,#0Fh
- swap a
- mov r7,a
- mov p1,#07Fh
- mov a,p1
- anl a,#0Fh
- orl a,r7
- mov line23,a
- pop 7
- pop a
- ret
- ;--------------------------------------
- ComWR:
- mov p2, #0FFh
- mov r0, #0F0h
- anl a,#0F0h
- movx @r0, A
- ret
- ;--------------------------------------
- DataWR:
- push acc
- mov p2, #0FFh
- mov r0, #0F1h
- orl a,#0Fh
- movx @r0, A
- pop acc
- swap a
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- orl a,#0Fh
- movx @r0, A
- mov a,#40
- djnz acc,$
- ret
- ;--------------------------------------
- Wait:
- mov A, #125
- Again1:
- push ACC
- clr A
- Again0:
- dec A
- jnz Again0
- pop ACC
- dec A
- jnz Again1
- ret
- ;--------------------------------------
- LCD_Init:
- push ACC
- mov p2, #0FFh
- mov r0, #0F0h
- mov a,#15
- call delay
- mov A,#30h
- call ComWR
- mov a,#15
- call delay
- mov A,#30h
- call ComWR
- mov a,#15
- call delay
- mov A,#30h
- call ComWR
- mov a,#15
- call delay
- mov A,#20h
- call ComWR
- mov a,#15
- call delay
- mov A,#20h
- call ComWR
- nop
- nop
- nop
- nop
- mov A,#80h
- call ComWR
- mov a,#15
- call delay
- mov A,#00h
- call ComWR
- nop
- nop
- nop
- nop
- mov A,#0C0h
- call ComWR
- mov a,#15
- call delay
- mov A,#00h
- call ComWR
- nop
- nop
- nop
- nop
- mov A,#10h
- call ComWR
- mov a,#15
- call delay
- mov A,#00h
- call ComWR
- nop
- nop
- nop
- nop
- mov A,#60h
- call ComWR
- mov a,#15
- call delay
- pop ACC
- ret
- ;--------------------------------------
- pr_null:
- jz pnull
- mov A,#'1'
- call DataWR
- ret
- pnull:
- mov A,#'0'
- call DataWR
- ret
- print_bool:
- mov b,a
- mov a,b
- anl a,#80h
- call pr_null
- mov a,b
- anl a,#40h
- call pr_null
- mov a,b
- anl a,#20h
- call pr_null
- mov a,b
- anl a,#10h
- call pr_null
- mov a,b
- anl a,#08h
- call pr_null
- mov a,b
- anl a,#04h
- call pr_null
- mov a,b
- anl a,#02h
- call pr_null
- mov a,b
- anl a,#01h
- call pr_null
- ret
- ;--------------------------------------
- print_asciiz:
- m1:
- mov a,#0
- movc A,@A+DPTR
- jz m2
- call DataWR
- mov a,#15
- call delay
- inc DPTR
- jmp m1
- m2:
- ret
- ;--------------------------------------
- getkey:
- call scankeyb
- ret
- ;======================== main ====================
- START:
- MOV SP,#70H
- mov DPTR,#0FFF0h
- mov a,#0FFh
- m01:
- ;movx @DPTR,A
- ;jmp m01
- ;call wait
- SETB SM0 ;mode 2
- MOV PCON,#80h ;set SMOD (x2 baudrate)
- MOV A,#30h
- MOV SBUF,A
- JNB TI,$
- CLR TI
- call LCD_Init
- MOV A,#31h
- MOV SBUF,A
- JNB TI,$
- CLR TI
- mov DPTR,#str1
- call print_asciiz
- MOV A,#32h
- MOV SBUF,A
- JNB TI,$
- CLR TI
- jmp $
- inf:
- ;mov a,#80h
- ;call ComWR
- ;mov a,#00h
- ;call ComWR
- call scankeyb
- ;mov a,line01
- ;call print_bool
- ;mov a,line23
- ;call print_bool
- mov a,#250
- call delay
- sjmp inf
- ORG 0f00h
- str1:
- db "VelocityVelocityVelocityVelocityVelocityVelocityVelocityVelocityVelocityVelocity",0
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement