高手来看单片机汇编程序设计!!!加分50

来源:百度知道 编辑:UC知道 时间:2024/09/26 00:24:01
学校考试的一道题目
8个按键 K0 K2 ... K7
7个LED灯 L0 L1 ... L6
要求:
1.K0 按下 L0亮(即要输出为1),其余不亮
2.K1 按下 L0亮,L1、L2灭,L3-L6保持原状态
K2 按下 L1亮,L0、L2灭,L3-L6保持原状态
K3 按下 L3亮,L0、L1灭,L3-L6保持原状态
3.K4 按下 L3亮,其余保持原状态
K5 按下 L4亮,其余保持原状态
K6 按下 L5亮,其余保持原状态
K7 按下 L6亮,其余保持原状态
4.采用40脚的单片机
K0 K2 ... K7接P1.0 - P1.7口
L0 L1 ... L6接P2.1 - P2.7口(可以视情况改变)
5.用汇编语言编写

请高手帮忙!!谢谢
K3 按下 L3亮,L0、L1灭,L3-L6保持原状态
打错了。。。。。不好意思
应该是
K3 按下 L2亮,L0、L1灭,L3-L6保持原状态

还有就是再按下原来的键时,灯灭,再按灯再开,如此往复
楼下那位答的没有考虑上面这个因素,还有防抖动问题

MOV P1,#0
MOV P2,#0
KKKK0:JNB P1.0,KKKK1
LCALL DIS20;延时20秒去抖动
JNB P1.0,KKKK1
ANL P2,#02H
CPL P2.1;取反,原亮则灭,原灭则亮
KKKK1:JNB P1.1,KKKK2
LCALL DIS20
JNB P1.0,KKKK2
ANL P2,#F4H
CPL P2.2
KKKK2:JNB P1.2,KKKK3
LCALL DIS20
JNB P1.0,KKKK3
ANL P2,#F8H
CPL P2.3
KKKK3:JNB P1.3,KKKK4
LCALL DIS20
JNB P1.0,KKKK4
CPL P2.4
KKKK4:JNB P1.4,KKKK5
LCALL DIS20
JNB P1.0,KKKK5
CPL P2.5
KKKK5:JNB P1.5,KKKK6
LCALL DIS20
JNB P1.0,KKKK6
CPL P2.6
KKKK6:JNB P1.6,KKKK7
LCALL DIS20
JNB P1.0,KKKK7
CPL P2.7
KKKK7:LCALL DIS1;延时约1秒后做下次判断
SJMP KKKK0
DIS20:MOV R7,#40
DIS22:MOV R6,#250
DJNZ R6,$
DLNZ R7,DIS22
RET
DIS1:MOV R7,#10
DIS11:MOV R6,#250
DIS12:MOV R5,#250
DJNZ R5,$
DJNZ R6,DIS12
DLNZ R7,DIS11
RET
延时程序是设定主频12MHz,再次按下键设定1秒间隔。