30pF PO O/ADO PO 1/AD1 TAL2 3/AD3 PO 4/AD4 R1 EDO 11 LED1 P208 10uF P2.1A9 R10 P23A11 LED2 4A12 P25A13 P26A14 P27/A15 LED3 P3.0RXD P32№NT0 LED4 P340 LED5 P3.7RD AT89C5 110 LED LED 图72单片机控制的流水灯
11 图7-2 单片机控制的流水灯
ORG 0100H START: MOV R2. #8 MO矿 A, #oFEH FEH为点亮P1.0脚发光二极管需写入P1口的点亮控制码 LOOP: MOV P1.A 点亮控制码写入P1口,点亮相应的LED LCALL DELAY 调用延时子程序 RL ;点亮控制码循环左移,点亮下一位 DJNZ R2, LOOP 判断左移是否超过8位,未超过继续循环 LJ№ P START ;左移循环已8次,再重新进行下一次循环点亮 DELAY:M矿 R5,#20 延时子程序,延时约0.2s D1 MOT F6,#20 D2: MOV R7,#248 DJNZ RT, D3 ;R?不为0则原地跳转 DJNZ R6, D2 DJNZ R5, D1 RET 12
12
7.2开关状态检测 检测开关处于闭合状态还是打开状态,只需把开关一端接 到MO端口的引脚上,另一端接地,然后通过检测MO端口引脚 的电平来实现。 【例7-2】如图7-3所示,利用单片机、1个开关k和1个发 光二极管LED,构成一个简单的检测开关k是否闭合的系统。 图7-3中,开关k的一端接到单片机P30引脚上,并通过上 拉电阻接到+5V上,开关的另一端接地,当开关打开时,P3.0 引脚为高电平,当开关闭合时,P30引脚为低电平。单片机对 开关状态的检测是由程序检测 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
xtAL1 P0.0/AD0 P0.2/AD2 XTAL2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 30■ 10ALE P2.4/A12 R2 P2.5/A13 P2.6/A14 LED P2.7/A15 R1 P1.0 P3. 0/RXD 220 P1.2 开关K P1.3 P3:3/n18 1.5 P1.6 1 P3.7/RD AT89C51 图7-3开关、LED发光二极管与P1口的连接 4
图 7 - 3 开关、LED发光二极管与P1口的连接 14
P0引脚的输入电平是高还是低。当开关闭合,即P30脚为低 电平;当开关打开,P3.0引脚为高电平。 P1.0引脚接发光二极管的阴极LED,当开关k闭合时,LED点 亮;开关打开时,LED熄灭。开关k与LED没有任何电气上的联 系 参考程序如下 0FG0100H START:JBP3.0,MLIG;判P3.0高还是低,若P3.0为高,开关打开,跳MLrG CLR P1.0 若P3.0为低,开关闭合,则P1.0输出0,点亮LED STMP START NOL IG: SETB P1. 0 开关为打开状态,P1.0置1,LED熄灭 SJMP START 跳 START处,继续检测 5
P3.0引脚的输入电平是高还是低。当开关闭合,即P3.0脚为低 电平;当开关打开,P3.0引脚为高电平。 P1.0引脚接发光二极管的阴极LED,当开关k闭合时,LED点 亮;开关打开时,LED熄灭。开关k与LED没有任何电气上的联 系。 参考程序如下: 15