|
/**************************************************************************************
* 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);
}
}
|
評分
-
查看全部評分
|