3. 多路开关状态指示 1. 实验任务 如图 4
1 所示,AT89S51 单片机的 P1
3 接四个发光二极管 L1-L4,P1
7 接了四个开关 K1-K4,编程将开关的状态反映到发光二极管上
(开关闭合,对应的灯亮,开关断开,对应的灯灭)
2. 电路原理图 图 4
1 3. 系统板上硬件连线 (1. 把“单片机系统”区域中的 P1
3 用导线连接到“八路发光二极管指示模块”区域中的 L1-L4 端口上; (2. 把“单片机系统”区域中的 P1
7 用导线连接到“四路拨动开关”区域中的 K1-K4 端口上; 4. 程序设计内容 (1. 开关状态检测 对于开关状态检测,相对单片机来说,是输入关系,我们可轮流检测每个开关状态,根据每个开关的状态让相应的发光二极管指示,可以采用 JB P1
X,REL 或 JNB P1
X,REL 指令来完成;也可以一次性检测四路开关状态,然后让其指示,可以采用 MOV A,P1 指令一次把 P1 端口的状态全部读入,然后取高 4 位的状态来指示
(2. 输出控制 根据开关的状态,由发光二极管 L1-L4 来指示,我们可以用 SETB P1
X 和 CLR P1
X 指令来完成,也可以采用 MOV P1,#1111XXXXB 方法一次指示
5. 程序框图 读 P1 口数据到 ACC中 ACC内容右移 4 次 ACC内容与 F0H 相或 ACC内容送入 P1 口 图 4
2 6. 方法一(汇编源程序)ORG 00HSTART: MOV A,P1ANL A,#0F0HRR ARR ARR ARR AXOR A,#0F0HMOV P1,ASJMP STARTEND7. 方法一(C 语言源程序)#include unsigned char temp;void main(void){while(