單片機(jī)C語(yǔ)言實(shí)例-13-雙燈左移右移閃爍
內(nèi)容:2個(gè)led燈先左移,然后右移,然后同時(shí)閃爍
------------------------------------------------*/
#include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),
//頭文件包含特殊功能寄存器的定義
void Delay(unsigned int t); //函數(shù)聲明
/*------------------------------------------------
主函數(shù)
------------------------------------------------*/
void main (void)
{
unsigned char i; //定義一個(gè)無(wú)符號(hào)字符型局部變量 i
//取值范圍 0~255
unsigned char temp;//定義臨時(shí)變量用于轉(zhuǎn)換
while (1) //主循環(huán)
{
temp=0xfc;
P1=temp;
for(i=0;i<7;i++) //加入 for循環(huán),表明for循環(huán)大括號(hào)
//中的程序循環(huán)執(zhí)行7次
{
Delay(50000); //調(diào)用延時(shí)程序;更改延時(shí)數(shù)字可
//以更改延時(shí)長(zhǎng)度;用于改變閃爍頻率
temp<<=1;
temp=temp|0x01; //也可以直接把temp換成P1
P1=temp; //之所以加入temp做中間變量,轉(zhuǎn)換
//完成后直接賦值到端口,防止直接
//操作端口造成的短暫閃爍
}
temp=0x3f;
P1=temp;
for(i=0;i<7;i++) //加入 for循環(huán),表明for循環(huán)大括號(hào)
//中的程序循環(huán)執(zhí)行7次
{
Delay(50000); //調(diào)用延時(shí)程序;更改延時(shí)數(shù)字可以
//更改延時(shí)長(zhǎng)度;用于改變閃爍頻率
temp>>=1;
temp|=0x80; //等效于 temp=temp|0x80
P1=temp;
}
for(i=0;i<3;i++) //加入 for循環(huán),表明for循環(huán)大括號(hào)
//中的程序循環(huán)執(zhí)行3次
{
P1=0xff;
Delay(50000);
P1=0x00;
Delay(50000);
} //主循環(huán)中添加其他需要一直工作的程序
}
}
/*------------------------------------------------
延時(shí)函數(shù),含有輸入?yún)?shù) unsigned int t,無(wú)返回值
unsigned int 是定義無(wú)符號(hào)整形變量,其值的范圍是
0~65535
------------------------------------------------*/
void Delay(unsigned int t)
{
while(--t);
}
更多詳情參考附件文檔
游客,如果您要查看本帖隱藏內(nèi)容請(qǐng) 回復(fù)
|