/////////////////////////////////////////////////////////////////////////
实现功能:让实验板上的D1-D8这个八个灯循环跑起来,先点亮D1,其他的灯都是熄
灭状态,间隔0.3秒,点亮D2,其他的灯都熄灭,这样依次循环,直到点
亮D8,然后从头再依次点亮。
实验板型号:BS-XYD-C52
实验名称: 流水灯
编写人: 谢应东
编写日期: 2012-4-24
/////////////////////////////////////////////////////////////////////////
#include
#include //这个头文件里包含了_crol_(,)这个循环右移的函数
#define uchar unsigned char //定义unsigned char 为 uchar
#define uint unsigned int
/////////////////////////////////////////////////////////////////////////
函数名称:毫秒延时函数
函数功能:实现毫秒级的延时
参数介绍:Delay_MS: 定义需要延时的毫秒的数值
iNumber: 记录Delay_MS的数值,以for语句实现所要求的延时
iValue: 要延时毫秒所要进行的循环数值,本数值为实际测得
返回值: 无
注意事项:本实验是在所用晶振为12M的前提下实现的毫秒延时,本函数是通过循环的形
式完成,所以如果改变了晶振的频率,请做相应的改变
/////////////////////////////////////////////////////////////////////////
void DelayMs(uint Delay_MS)
{
uint iNumber,iValue;
for(iNumber=0;iNumber
{
iValue=107;
while(iValue--);
}
}
/////////////////////////////////////////////////////////////////////////
函数名称:主函数
函数功能:完成D1-D8发光二极管的循环显示
参数介绍:无
返回值: 无
注意事项:无
/////////////////////////////////////////////////////////////////////////
void main()
{
uchar cTempValue,cNumber;//cTempValue为取零时值的变量,cNumber为循环变量
while(1)
{
cTempValue=0xfe; //起始让D1点亮的零时值
for(cNumber=0;cNumber<8;cNumber++)
{
P1=cTempValue; //赋予P1口初始值
cTempValue=_crol_(cTempValue,1); //调用循环右移的函数
DelayMs(300); //延时0.3秒
}
}
}