单片机C语言编程(正反流水灯)

来源:百度知道 编辑:UC知道 时间:2024/06/27 16:04:39
单片机AT89S52,8个发光二极管接在P0口,低电平有效,
加上看门狗程序,谢谢高手!

#include"reg51.h"
sfr WDTRST = 0xA6; //定义看门狗;

void Delay(unsigned int x)
{unsigned char s;
while(x--)
{for(s=0;s<125;s++);}
}
void main()
{
unsigned char sw=0;
char cf=1;
WDTRST=0x1E;
WDTRST=0xE1;//初始化看门狗。
P0=0xFE;
for(;;)
{
if(cf>0)
{P0<<=1;
P0|=0x01;
Delay(200);
if(P0==0xFF)
{cf=cf*(-1); P0=0x7F;}
}

else
{

P0>>=1;
P0=P0|0x80;
Delay(200);
if(P0==0xFF)
{cf=cf*(-1); P0=0xFE;}
}

WDTRST=0x1E;
WDTRST=0xE1;//喂狗指令
}

}

每次一个灯亮,先左移,再右移。每200毫秒移位一次。假设晶振是12MHZ。
在Proteus上仿真通过。