键盘多功能按键识别设计

来源:百度知道 编辑:UC知道 时间:2024/09/21 06:29:15
开关SP1接在P3.7/RD管脚上,在AT89c51单片机的P1端口接有四个发光二极管,上电的时候,L1接在P1.0管脚上的发光二极管在闪烁,当每一次按下开关SP1的时候,L2接在P1.1管脚上的发光二极管在闪烁,再按下开关SP1的时候,L3接在P1.2管脚上的发光二极管在闪烁,再按下开关SP1的时候,L4接在P1.3管脚上的发光二极管在闪烁,再按下开关SP1的时候,又轮到L1在闪烁了,如此轮流下去.晶震频率为12Mhz.发光二极管闪烁频率为0.4S.编程实现。每隔10MS检测一下开关状态。

我这有一个程序,跟你所说的相当类似,如果还有什么不合适的地方,你改动一下即可!
ORG 0000H
LJMP START
ORG 0030H
START: MOV SP,#60H
MOV P1,#0FFH
LOOP: JB P3.7,KEY1
LJMP LOOP

KEY1: MOV P1,#0FFH
L1: CPL P1.0
LCALL DEL400MS
JNB P3.7,KEY2
LJMP L1

KEY2: MOV P1,#0FFH
L2: CPL P1.1
LCALL DEL400MS
JNB P3.7,KEY3
LJMP L2

KEY3: MOV P1,#0FFH
L3: CPL P1.2
LCALL DEL400MS
JNB P3.7,KEY4
LJMP L3

KEY4: MOV P1,#0FFH
L4: CPL P1.3
LCALL DEL400MS
JNB P3.7,KEY1
LJMP L4

DEL400MS: MOV R5,#097H
DL400MS0: MOV R6,#07EH
DL400MS1: MOV R7,#09H
DJNZ R7,$
DJNZ R6,DL400MS1
DJNZ R5,DL400MS0
RET
END