ljmp main
keyscan: lcall keyscan1
lcall delay1
lcall keyscan1
jnb p1.4 , value10
jnb p1.5 , value20
jnb p1.6 , value30
jnb p1.7 , value40
value10: mov r1 , #01h
ljmp row
value20: mov r1 , #02h
ljmp row
value30: mov r1 , #03h
ljmp row
value40: mov r1 ,#04h
row: lcall keyscan2
jnb p1.0 , value100
jnb p1.1 , value200
jnb p1.2 , value300
jnb p1.3 , value400
value100: mov r2 , #10h
ljmp value
value200: mov r2 , #20h
ljmp value
value300: mov r2 , #30h
ljmp value
value400: mov r2 , #40h
value: mov a , r1
add a , r2
lcall delay1
lcall keyscan3
ret
keyscan1: mov p1 , #0f0h
loop: lcall delay
mov a , p1
cjne a , #0f0h ,loop1
ljmp loop
loop1: nop
ret
keyscan2: mov p1 , #0fh
loop3: lcall delay
mov a , p1
cjne a , #0f0h ,loop4
ljmp loop3
loop4: nop
ret
keyscan3: mov p1 , #0fh
loop5: lcall delay
mov a , p1
cjne a , #0fh , loop5
lcall sound
ret
delay: mov r7 , #25 _/*延时500ms*/
del1: mov r6 , #200
del: djnz r6 , del
djnz r7 , del1
ret
delay1: mov r7 , #2
del00: mov r6 , #0ffh
del0: djnz r6 , del0
djnz r7 , del00
ret
tran: cjne r2 , #10h , lie2
ljmp panduanhang1
lie2: cjne r2 , #20h , lie3
ljmp panduanhang2
lie3: cjne r2 , #30h , lie4
ljmp panduanhang3
lie4: cjne r2 , #40h , tran
ljmp panduanhang4
ret
panduanhang1: cjne r1 ,#1h , hang2
ljmp value0
hang2: cjne r1 , #2h , hang3
ljmp value1
hang3: cjne r1 , #3h , hang4
ljmp value2
hang4: cjne r1 , #4h , panduanhang1
ljmp value3
ret
panduanhang2: cjne r1 ,#1h , hang22
ljmp value4
hang22: cjne r1 , #2h , hang32
ljmp value5
hang32: cjne r1 , #3h , hang42
ljmp value6
hang42: cjne r1 , #4h , panduanhang2
ljmp value7
ret
panduanhang3: cjne r1 ,#1h , hang23
ljmp value8
hang23: cjne r1 , #2h , hang33
ljmp value9
hang33: cjne r1 , #3h , hang43
ljmp valuea
hang43: cjne r1 , #4h , panduanhang3
ljmp valueb
ret
panduanhang4: cjne r1 , #1h , hang24_/*R2ÖеÄÄÚÈÝ´ú±íÐÐ*/
ljmp valuec
hang24: cjne r1 , #2h , hang34
ljmp valued
hang34: cjne r1 , #3h , hang44
ljmp valuee
hang44: cjne r1 , #4h , panduanhang4
ljmp valuef
ret
value0: mov a , #00h
ret
value1: mov a , #01h
ret
value2: mov a , #02h
ret
value3: mov a , #03h
ret
value4: mov a , #04h
ret
value5: mov a , #05h
ret
value6: mov a , #06h
ret
value7: mov a , #07h
ret
value8: mov a , #08h
ret
value9: mov a , #09h
ret
valuea: mov a , #0ah
ret
valueb: mov a , #0bh
ret
valuec: mov a , #0ch
ret
valued: mov a , #0dh
ret
valuee: mov a , #0eh
ret
valuef: mov a , #0fh
ret
sound: clr p3.4
lcall delay1
setb p3.4
ret
sound1: clr p3.4
lcall delay3
setb p3.4
ret
display: mov p2 , #0efh
mov a , 30h
lcall keydispaly
lcall delay1
mov p2 , #0dfh
mov a , 31h
lcall keydispaly
lcall delay1
mov p2 , #0bfh
mov a , 32h
lcall keydispaly
lcall delay1
mov p2 , #7fh
mov a , 33h
lcall keydispaly
lcall delay1
ret
delay3: mov r6 , #200
del2: djnz r6 , del2
ret
keydispaly:
mov dptr , #tab1
mov b , #03h
mul ab
mov r2 , a
mov a , b
add a , dph
mov dph , a
mov a , r2
jmp @a+dptr
tab1: ljmp keyvalue0_/*键值查表*/
ljmp keyvalue1
ljmp keyvalue2
ljmp keyvalue3
ljmp keyvalue4
ljmp keyvalue5
ljmp keyvalue6
ljmp keyvalue7
ljmp keyvalue8
ljmp keyvalue9
ljmp keyvaluea
ljmp keyvalueb
ljmp keyvaluec
ljmp keyvalued
ljmp keyvaluee
ljmp keyvaluef
ret
keyvalue0: mov p0 , #0c0h_/*译码程序*/
ret
keyvalue1: mov p0 , #0f9h
ret
keyvalue2: mov p0 , #0a4h
ret
keyvalue3: mov p0 , #0b0h
ret
keyvalue4: mov p0 , #99h
ret
keyvalue5: mov p0 , #92h
ret
keyvalue6: mov p0 , #82h
ret
keyvalue7: mov p0 , #0f8h
ret
keyvalue8: mov p0 , #80h
ret
keyvalue9: mov p0 , #90h
ret
keyvaluea: mov p0 , #88h
ret
keyvalueb: mov p0 , #83h
ret
keyvaluec: mov p0 , #0c6h
ret
keyvalued: mov p0 , #0a1h
ret
keyvaluee: mov p0 , #86h
ret
keyvaluef: mov p0 , #8eh
ret
end