标题:
独立键盘循环,自己用汇编写的,烧录后就是按键没反应
[打印本页]
作者:
mosybn
时间:
2013-8-26 23:51
标题:
独立键盘循环,自己用汇编写的,烧录后就是按键没反应
程序在keil中模拟没找出问题来,但是下载到单片机里面就是运行不了,
键盘是p3.0-3.3 ,led灯是p2.0-p2.3,想实现按p3.0一下,p2.0点亮\或者灭。其他按键类推。烧录后,没实现功能,具体为按键后灯没任何反应。
ORG 0000H
AJMP START
ORG 0080H
START:
MOV P2,#0FFH ;全灭p2口led
MOV P3,#0FFH;使得P3口全部高电平,准备独立按键初始状态
KEYCHECK1: ;按键检查是否有1->0,改变
MOV A,#00H ;清0累加器内数值
JNB P3.0, DELAY
JNB P3.1,DELAY
JNB P3.2,DELAY
JNB P3.3,DELAY
LJMP KEYCHECK1
KEYCHECK2: ;延时后,是否还保持低电平,是则调用键盘释放程序,否则跳到keycheck1
JNB P3.0,LOOP
JNB P3.1,LOOP
JNB P3.2,LOOP
JNB P3.3,LOOP
LJMP START
DELAY: ;延时程序,目的为消除机械抖动
MOV R7,#100
D1: MOV R6,#100
DJNZ R6,$
DJNZ R7,D1
LJMP KEYCHECK2
LOOP: ;判断键盘是否释放,是则继续,否则跳到loop做自动循环
MOV A,P3 ;给A输入p3状态
D2:
MOV R1,P3 ;用r1和ff比较大小,从而判断是否释放
CJNE R1,#0FFH,D2
JNB ACC.0,K1 ;判断那个键按下,点亮那个灯,a一直带P3的值
JNB ACC.1,K2
JNB ACC.2,K3
JNB ACC.3,K4
LJMP START
K1: ;取反输出口,点亮和熄灭灯
CPL P2.0
LJMP START
K2:
CPL P2.1
LJMP START
K3:
CPL P2.2
LJMP START
K4:
CPL P2.3
LJMP START
END
QQ图片20130829234715.jpg
(8.53 KB, 下载次数: 118)
下载附件
2013-8-26 23:48 上传
键盘接法
作者:
zjjhtony
时间:
2013-8-27 21:25
ORG 0000H
AJMP START
ORG 0080H
START: MOV P2,#0FFH
KEY1: MOV A,P3
CJNE A,#0FFH,KEY2
AJMP KEY1
KEY2: ACALL DELAY
MOV A,P3
CJNE A,#0FFH,KEY3
AJMP KEY1
KEY3: MOV R0,P3
KEY4: MOV A,P3
CJNE A,#0FFH,KEY4
MOV A,R0
CJNE A,#0FEH,KEY01
CPL P2.0
KEY01: CJNE A,#0FDH,KEY02
CPL P2.1
KEY02: CJNE A,#0FBH,KEY03
CPL P2.2
KEY03: CJNE A,#0F7H,KEY1
CPL P2.3
AJMP KEY1
DELAY: MOV R7,#100 ;延时程序,目的为消除机械抖动
D1: MOV R6,#100
DJNZ R6,$
DJNZ R7,D1
RET
END
自己看看,这个仿真过。
作者:
ahshmj
时间:
2013-8-28 08:35
本帖最后由 ahshmj 于 2013-8-28 08:37 编辑
第一次看见这样的按键程序。
KEYCHECK1:
JNB P3.0, K1
JNB P3.1, K2
JNB P3.2, K3
JNB P3.3, K4
JMP KEYCHECK1
K1:
CALL DELAY ;延时
JB P3.0, START ;再次确认不是误动作
CPL P2.0 ;执行按键功能
JNB P3.0, $ ;等待按键抬起
LJMP START 返回
K2:
......
K3:
......
K4
......
作者:
mosybn
时间:
2013-8-28 09:42
已经解决了,是因为
“ CJNE R1,#0FFH,D2 ”
中的比较出问题,我将p3状态给了r1,然后和0ff比较,实际上P3高四位是做别的用途,状态不定的。
所以改成如下,屏蔽掉高四位:
D2:
MOV A,P3 ;用r1和ff比较大小,从而判断是否释放
ANL A,#0FH
CJNE A,#0FH,D2
再烧录就可以了。
作者:
liuzhaoxin1020
时间:
2017-2-17 13:38
学习了, 很不错的经验,值得分享
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1