|
/**************************************************************************************
* LED流水灯的实验 *
实现现象:下载程序后P2口8个Led轮流点亮
程序实现思想:通过设置0x01和0x80两个初始值,000000001和100000000分别左移和右移,因为是低电平点亮LED,左右移后需要取反
再加上一定的延时就可以实现LED流水灯效果。
注意事项:无
***************************************************************************************/
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
void RunningLight (void); //LedOnOff()函数声明
void Delay(unsigned int i);//延时函数
typedef unsigned int u16;
typedef unsigned char u8;
#define led P2
int light;
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main(void) //程序从main函数开始执行
{
while(1) //1表示条件表达式值为真,程序一直循环
{
RunningLight();
}
}
/*******************************************************************************
* 函 数 名 : Delay
* 函数功能 : 延时i*10us的时间
* 输 入 : i<65536
* 输 出 : 无
*******************************************************************************/
void Delay(unsigned int i)
{
while(i--); //i-1,直到i=0,退出
}
/*******************************************************************************
* 函 数 名 : RunningLight
* 函数功能 : 流水灯
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void RunningLight()
{
u8 i,j;
light=0x01;
for(i=0;i<8;i++) //led循环左移
{
led=~(light<<i);
Delay(1000);
}
light=0x80;
for(j=0;j<8;j++) //led循环右移
{
led=~(light>>j);
Delay(20000);
}
}
|
评分
-
查看全部评分
|