①使用P3口作为信号输入口,P1口作为信号输出口。
②用三个钮子开关控制三支发光二极管,若三开关同时接高电平或同时接低电平,发光二极管均熄灭;若仅有一开关接高电平,相应的一支发光二极管亮,剩下两支则灭;若有两开关同时接高电平,则相应的两支发光二极管灭,剩下一支则亮。
③编写程序的首地址设为4000H。
谢谢!~
P3口作为按键的信号输入,你程序扫描P3口的3个开关的高电平,并得出相应的按键值,3个按键,总共8个组合,000,001,010,011,100,101,110,111。先查看P3.0口,如果为1或者0,跳到相应的程序--就剩4个组合了,在这个4个程序里查看P3.1口,也有1或者0,也相应跳到程序中--就剩2中组合了,在这2个程序里查看P3.2口,也有1或者0,这样就可以控制P1口直接接电阻驱动控制LED灯了。
用C语言就简单多了,直接switch语句就解决了,估计这道题用汇编是锻炼逻辑能力的。。。。用C就没意义了。追问
用C语言就简单多了,直接switch语句就解决了,估计这道题用汇编是锻炼逻辑能力的。。。。用C就没意义了。追问
我是需要一段汇编编写的程序。。谢谢~
追答要程序我帮不了你了,汇编我还要翻书,让别人帮你吧。。。
追问哦。谢谢了
温馨提示:答案为网友推荐,仅供参考
第1个回答 2011-11-01
假设P3.0接K1信号,P3.1接K2信号,P3.2接K3信号
ORG 4000H
LJMP START
START:MOV A,P3
ANL A,#07H //屏蔽P3口高5位,只有P3.0-P3.2
JZ L1 // A=0,说明P3.0-P3.2全为0
CJNE A,#07H,L2 //A=7,说明P3.0-P3.2全为1
L1: MOV P1,#00H
SJMP L3
L2: CJNE A,#03H,L4 //P3.0、P3.1=1
MOV P1,#04H
SJMP L3
L4: CJNE A,#06H,L5 //P3.1、P3.2=1
MOV P1,#01H
SJMP L3
L5: CJNE A,#05H,L6 //P3.0、P3.2=1
MOV P1,#02H
SJMP L3
L6: MOV P1,A
L3: RET本回答被提问者采纳
ORG 4000H
LJMP START
START:MOV A,P3
ANL A,#07H //屏蔽P3口高5位,只有P3.0-P3.2
JZ L1 // A=0,说明P3.0-P3.2全为0
CJNE A,#07H,L2 //A=7,说明P3.0-P3.2全为1
L1: MOV P1,#00H
SJMP L3
L2: CJNE A,#03H,L4 //P3.0、P3.1=1
MOV P1,#04H
SJMP L3
L4: CJNE A,#06H,L5 //P3.1、P3.2=1
MOV P1,#01H
SJMP L3
L5: CJNE A,#05H,L6 //P3.0、P3.2=1
MOV P1,#02H
SJMP L3
L6: MOV P1,A
L3: RET本回答被提问者采纳