打印

单片机控制数字键盘 LED定位 数码管显示按键功能

[复制链接]
3046|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mjg89|  楼主 | 2009-12-13 17:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 mjg89 于 2009-12-13 18:05 编辑



LED定位显示正常,但数码管就是现实不出来。
小弟初学单片机,愿给为仁者给予帮助,指出一下程序的错误。

单片机系统区域中的P1.0P1.7端口用8芯排线连接到“4X4行列式键盘区域中的C1C4 R1R4端口上。

八个LED分别也连接着P1的八个端口。
四位数码管的公共端是连接P0的,位选是连接P2_4-P2_7的。
KEYBUF EQU 30H
ORG 00H
START: MOV KEYBUF,#2
WAIT:
MOV P1,#0FFH         
CLR P1.4        
mov P2,#0EFH
MOV A,P1
ANL A,#0FH
XRL A,#0FH
JZ NOKEY1
LCALL DELY10MS     
MOV A,P1
ANL A,#0FH
XRL A,#0FH
JZ NOKEY1
MOV A,P1
ANL A,#0FH
CJNE A,#0EH, NK1
MOV KEYBUF,#0
LJMP DK1                  
NK1: CJNE A,#0DH, NK2
MOV KEYBUF,#1
LJMP DK1
NK2: CJNE A,#0BH,NK3
MOV KEYBUF,#2
LJMP DK1
NK3: CJNE A,#07H,NK4
MOV KEYBUF,#3
LJMP DK1
NK4: NOP
DK1:
MOV A,KEYBUF
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A         
DK1A: MOV A,P1
ANL A,#0FH
XRL A,#0FH
JNZ DK1A
NOKEY1:      
MOV P1,#0FFH
CLR P1.5
MOV A,P1
ANL A,#0FH
XRL A,#0FH
JZ NOKEY2
LCALL DELY10MS
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY2
MOV A,P1
ANL A,#0FH
CJNE A,#0EH,NK5
MOV KEYBUF,#4
LJMP DK2
NK5: CJNE A,#0DH,NK6
MOV KEYBUF,#5
LJMP DK2
NK6: CJNE A,#0BH,NK7
MOV KEYBUF,#6
LJMP DK2
NK7: CJNE A,#07H,NK8
MOV KEYBUF,#7
LJMP DK2
NK8: NOP
DK2:
MOV A,KEYBUF
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
DK2A: MOV A,P1
ANL A,#0FH
XRL A,#0FH
JNZ DK2A
NOKEY2:
MOV P1,#0FFH
CLR P1.6
MOV A,P1
ANL A,#0FH
XRL A,#0FH
JZ NOKEY3
LCALL DELY10MS
MOV A,P1
ANL A,#0FH
XRL A,#0FH
JZ NOKEY3
MOV A,P1
ANL A,#0FH
CJNE A,#0EH,NK9
MOV KEYBUF,#8
LJMP DK3
NK9: CJNE A,#0DH,NK10
MOV KEYBUF,#9
LJMP DK3
NK10: CJNE A,#0BH,NK11
MOV KEYBUF,#10
LJMP DK3
NK11: CJNE A,#07H,NK12
MOV KEYBUF,#11
LJMP DK3
NK12: NOP
DK3:
MOV A,KEYBUF
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
DK3A: MOV A,P1
ANL A,#0FH
XRL A,#0FH
JNZ DK3A
NOKEY3:
MOV P1,#0FFH
CLR P1.7
MOV A,P1
ANL A,#0FH
XRL A,#0FH
JZ NOKEY4
LCALL DELY10MS
MOV A,P1
ANL A,#0FH
XRL A,#0FH
JZ NOKEY4
MOV A,P1
ANL A,#0FH
CJNE A,#0EH,NK13
MOV KEYBUF,#12
LJMP DK4
NK13: CJNE A,#0DH,NK14
MOV KEYBUF,#13
LJMP DK4
NK14: CJNE A,#0BH,NK15
MOV KEYBUF,#14
LJMP DK4
NK15: CJNE A,#07H,NK16
MOV KEYBUF,#15
LJMP DK4
NK16: NOP
DK4:
MOV A,KEYBUF
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
DK4A: MOV A,P1
ANL A,#0FH
XRL A,#0FH
JNZ DK4A
NOKEY4:
LJMP WAIT
DELY10MS:
MOV R6,#10
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
RET
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
END

相关帖子

沙发
不亦心| | 2009-12-15 15:04 | 只看该作者
本帖最后由 不亦心 于 2009-12-15 15:05 编辑

给点建议
我也是菜鸟,也是用汇编的,刚来21的时候,发的帖子也和LZ差不多,
21的大虾们给了很多建议,这里借来给LZ

汇编程序本来就跳来跳去,个人编程思路不同,程序也不一样,所以建议LZ发帖的时候带上注释,另外标号尽量独占一行,操作码和操作数之间间距大一点,这样别人容易阅读程序一点。

不然别人本来很想帮忙的,但是看到程序很乱,又没注释,就懒的看了。

使用特权

评论回复
板凳
mjg89|  楼主 | 2009-12-15 18:34 | 只看该作者
哦。。谢谢哈 我以后会注意的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

13

帖子

1

粉丝