程序在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
|