/*-----------------------------------------------
名称:流水灯
日期:2016.7.24
修改:无
内容:循环点亮P1口对应的8个LED灯,造成循环流水点亮的效果
------------------------------------------------*/
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
/*------------------------------------------------
延时子程序
------------------------------------------------*/
void delay(unsigned int cnt)
{
while(--cnt);
}
/*------------------------------------------------
主函数
------------------------------------------------*/
main()
{
bit flag = 0; //设置一个位变量
P1=0x7f; //给初始化值 换算成二进制是0111 1111
while(1) //当为1时 则无限循环 当为0时 则一次都不执行
{
if (flag == 0) //判断是否为0
{
delay(30000); //延时程序
P1 = P1 >> 1; //右移一位 该语句等效于 P1=P1>>1
P1 |= 0x80; // 1000 0000
if(P1==0xfe) //检测是否移到最左端?"=="表示检测符号2端的值是否相等
{
flag = 1;
}
}
else
{
delay(30000); //延时程序
P1 = P1 << 1; //左移一位 该语句等效于 P1=P1<<1
P1 |= 0x01; // 0000 0001
if(P1==0x7f) //检测是否移到最左端?"=="表示检测符号2端的值是否相等
{
flag = 0;
}
}
}
}