实在不会做这个:用AT89C52的P0口接8个发光二极管,开关K1和K2分别连至单片机引脚P3.2和P3.3.要求按下K1后,如果8只LED为熄灭状态,则点亮,如果8只LED为点亮状态,则保持;按下K2后,不管8只LED是熄灭
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/06 07:45:44
实在不会做这个:用AT89C52的P0口接8个发光二极管,开关K1和K2分别连至单片机引脚P3.2和P3.3.要求按下K1后,如果8只LED为熄灭状态,则点亮,如果8只LED为点亮状态,则保持;按下K2后,不管8只LED是熄灭
实在不会做这个:用AT89C52的P0口接8个发光二极管,开关K1和K2分别连至单片机引脚P3.2和P3.3.
要求按下K1后,如果8只LED为熄灭状态,则点亮,如果8只LED为点亮状态,则保持;按下K2后,不管8只LED是熄灭还是点亮状态,都变为闪烁状态.编制相应程序并且仿真.
实在不会做这个:用AT89C52的P0口接8个发光二极管,开关K1和K2分别连至单片机引脚P3.2和P3.3.要求按下K1后,如果8只LED为熄灭状态,则点亮,如果8只LED为点亮状态,则保持;按下K2后,不管8只LED是熄灭
其实这个程序很简单的,没有那么长的,更没有那么复杂呀.很简单的事,为什么要搞得那么复杂呢?
见下图和程序:
#include <reg52.h>
sbit k1=P3^2;
sbit k2=P3^3;
bit glint; //闪烁标志位
void delay()
{
unsigned int i;
for(i=12000;i>0;i--);
}
main()
{
while(1)
{
if(glint==1)
{
P0=~P0;
delay();
}
if(k1==0)
{
glint=0; //停止闪烁
P0=0; //全亮
while(k1==0);
}
if(k2==0)
{
glint=1; //开始闪烁
while(k2==0);
}
}
}