30pF X1 U1 19 XTAL1 PO.O/ADO ■39 C2 P0.1/AD1 ■39 P0.2/AD2 37 18 XTAL2 P0.3/AD3 P0.4/AD4 ■35 LEDO 30pF R1 P0.5/AD5 ■34 R9 10k ■33 9■ PO.6/AD6 RST P0.7/AD7 ■32 Voc 110 LED1 R2 C31月 P2.0A8 ■21 Voc P2.1A9 ■22 P2.2A10 ■23 110 ▣0 R10 小 29■ PSEN P2.3/A11 ■24 LED2 30口 P2.4A12 ■25 R3 1k 31▣ P2.5/A13 ■26 ■27 P2.6/A14 110 P2.7A15 28 R4 LED3 1■ ■10 2■ P1.0 P3.0/RXD P11 ■11 3■ P3.1/TXD 110 4■ P1.2 P3.2ANTO 12 LED4 5■ P1.3 P3.3ANT1 ■13 R5 6■ P14 P3.4T0 ■14 7 P1.5 P3.5T1 15 110 8■ P1.6 P3.6NVR LED5 P1.7 P3.7/RD R6 AT89C51 110 LED6 R7 110 LED7 R8 110 图7-2单片机控制的流水灯 11
11 图7-2 单片机控制的流水灯
ORG 0100H START: MOV R2,超 MOV A,#OFEH ;FEH为点亮P1.0脚发光二极管需写入P1口的点亮控制码 L00P: MOV P1,A ;点亮控制码写入P1口,点亮相应的LED LCALL DELAY ;调用延时子程序 RL A ;点亮控制码循环左移,点亮下一位 DJNZ R2,LOOP ;判断左移是否超过8位,未超过继续循环 LJMP START ;左移循环已8次,再重新进行下一次循环点亮 DELAY: MOV R5,#20 ;延时子程序,延时约0.2s D1: MOV R6,#20 D2: MOV R7,#248 D3: DJNZ R7,D3 ;R7不为0则原地跳转 DJNZ R6,D2 DJNZ R5,D1 RET END 12
12
7.2开关状态检测 检测开关处于闭合状态还是打开状态,只需把开关一端接 到VO端口的引脚上,另一端接地,然后通过检测VO端口引脚 的电平来实现。 【例7-2】如图7-3所示,利用单片机、1个开关k和1个发 光二极管LED,构成一个简单的检测开关k是否闭合的系统。 图7-3中,开关k的一端接到单片机P3.0引脚上,并通过上 拉电阻接到+5V上,开关的另一端接地,当开关打开时,P3.0 引脚为高电平,当开关闭合时,P3.0引脚为低电平。单片机对 开关状态的检测是由程序检测 13
7.2 开关状态检测 检测开关处于闭合状态还是打开状态,只需把开关一端接 到I/O端口的引脚上,另一端接地,然后通过检测I/O端口引脚 的电平来实现。 【例7-2】 如图7-3所示,利用单片机、1个开关k和1个发 光二极管LED,构成一个简单的检测开关k是否闭合的系统。 图7-3中,开关k的一端接到单片机P3.0引脚上,并通过上 拉电阻接到+5V上,开关的另一端接地,当开关打开时,P3.0 引脚为高电平,当开关闭合时,P3.0引脚为低电平。单片机对 开关状态的检测是由程序检测 13
V1 19 XTAL1 P0.0/AD0 ■39 P0.1/AD1 ■38 P0.2/AD2 18 XTAL2 P0.3/AD3 36 P0.4/AD4 P0.5/AD5 ■34 P0.6/AD6 3 9■ RST P0.7/AD7 2 +5v P2.0/A8 21 P2.1/A9 A+5v P2.2/A10 29■ PSEN P2.3/A11 ■ 30▣ 31▣ E P2.4/A12 EA R2 P2.5/A13 P2.6/A14 4.7K LED P2.7/A15 1■ P1.0 P3.0/RⅫ 220 P1.1 P3.1/TⅫ P1.2 P3.2/INTO 开关K P1.3 P3.3/INT1 P1.4 P3.4/T0 P1.5 P3.5/T1 P1.6 P3.6/限 P1.7 P3.7/RD AT89C51 图7-3 开关、LED发光二极管与P1口的连接 14
图 7 - 3 开关、LED发光二极管与P1口的连接 14
P3.0引脚的输入电平是高还是低。当开关闭合,即P3.0脚为低 电平;当开关打开,P3.0引脚为高电平。 P1.0引脚接发光二极管的阴极LED,当开关k闭合时,LED点 亮;开关打开时,LED熄灭。开关k与LED没有任何电气上的联 系。 参考程序如下: ORG 0100H START: JB P3.0,NOLIG ;判P3.0高还是低,若P3.0为高,开关打开,跳oLIG CLR P1.0 ;若P3.0为低,开关闭合,则P1.0输出0,点亮LED SJMP START NOLIG: SETB P1.0 ;开关为打开状态,P1.0置1,LED熄灭 SJMP START ;跳START处,继续检测 END 15
P3.0引脚的输入电平是高还是低。当开关闭合,即P3.0脚为低 电平;当开关打开,P3.0引脚为高电平。 P1.0引脚接发光二极管的阴极LED,当开关k闭合时,LED点 亮;开关打开时,LED熄灭。开关k与LED没有任何电气上的联 系。 参考程序如下: 15