流水灯

流水灯又叫跑马灯,意思是一串灯轮着亮,第一个灯先亮,然后灭掉;第二个灯再亮,然后灭掉;以此类推

2022滨州学院实验技术项目示例


对应的程序如下(过程版本)

#include <Reg52.h>       //include包含  
                     
sbit P20 = P2^0;
sbit P21 = P2^1; 
sbit P22 = P2^2; 
sbit P23 = P2^3; 
sbit P24 = P2^4; 
sbit P25 = P2^5; 
sbit P26 = P2^6; 
sbit P27 = P2^7;   
void delay(void)
{
	int i;
	for (i=1;i<30000;i++);
}	
void main()
{
	while(1)
	{
		P27 = 1; P20 = 0;   //关第8个灯,开第1个灯 
		delay(); //延迟1秒
		P20 = 1; P21 = 0; //关第1个灯,开第2个灯
		delay();
		P21 = 1; P22 = 0;  // 关第2个灯,开第3个灯
		delay();
		P22 = 1; P23 = 0; //依次类推
		delay();
		P23 = 1; P24 = 0;  
		delay();
		P24 = 1; P25 = 0;  
		delay();		
		P25 = 1; P26 = 0;  
		delay();
		P26 = 1; P27 = 0; 
		delay();	
}

最终程序

通过移位语句,我们可以对上面的语句进行进一步整合。

#include <Reg52.h>       //include包含  

void delay()
{
	//有待补充
}	
void main()
{
	int i;
	int data = 0x01;
	while(1)
	{
		for(i = 0;i<8;i++)
		{
			P2 = ~(data << i) ; //先移位再取反,这句话很精炼,但是不好理解
			delay();
		}
}
============================找指导老师布置任务吧==============================