反轉法掃描的匯編程序:電路圖:矩陣鍵盤接p1口,數碼管位接p2 段選接p3,程序經過測試的可以用.
- org 0000h
- ljmp main
- org 0030h
- main: mov P2,#0feh ;送數碼管位選
- lcall scan ;調用掃描函數
- ljmp main
- scan: mov P1,#0f0h
- mov a,90h ;讀引腳
- cjne a,#0f0h,start0 ;
- ljmp exit
- start0: lcall delay
- mov P1,#0f0h
- mov a,90h ;再次讀引腳
- cjne a,#0f0h,start1
- ljmp exit
- start1: mov r3,a ;存取行的碼值
- mov P1,#0fh
- mov a,90h ;
- cjne a,#0fh,start2
- ljmp exit
- start2: lcall delay
- mov P1,#0fh
- mov a,90h ;讀取列碼值
- mov r2,a
- cjne a,#0fh,strat3
- ljmp exit
- strat3: ;mov r2,a
- anl a,#0fh
- mov r2,a
- mov a,r3
- anl a,#0f0h
- orl a,r2
- ; orl a,r3
- mov 60h, a ;存取鍵的碼值
- mov r5,#00h
- mov dptr,#cod
- w1: mov a,r5
- movc a,@a+dptr ;開始查表
- inc r5
- cjne a,60h,w1 ;直到查表結束
- lcall display ;查到后開始顯示
- exit: ret
- display:mov a,r5 ;顯示的數值代號存在r5中
- subb a,#01h
- mov dptr,#num
- movc a,@a+dptr
- mov P3,a ;送數碼管段碼
- ret
- delay: MOV R5,#10
- D2: MOV R6,#2
- D1: MOV R7,#248
- DJNZ R7,$
- DJNZ R6,D1
- DJNZ R5,D2
- RET
- ORG 0500H
- num: DB 0C0H,0F9H,0A4H,0B0H,99H
- DB 92H,82H,0F8H,080H,90H,88h,83h,0c6h,0a1h,86h,8eh
- org 0550h
- cod: db 0eeh,0deh,0beh,7eh, 0edh,0ddh,0bdh,7dh
- db 0ebh,0dbh,0bbh,7bh,0e7h,0d7h,0b7h,77h
- end
復制代碼 |