標(biāo)題: 單片機(jī)做流水燈C程序 [打印本頁]
作者: liuyang 時(shí)間: 2012-3-19 03:22
標(biāo)題: 單片機(jī)做流水燈C程序
程序原是控制P1口現(xiàn)在經(jīng)我改成P2口,學(xué)單片機(jī)的你 知道怎么改的......廢話不多說 下面是原代碼:
#include<reg52.h> //包含頭文件
#include<intrins.h> //包含有左右循環(huán)移位子函數(shù)的庫
#define uchar unsigned char
#define uint unsigned int
void delay(uint);
void main()
{
while(1)
{
uchar i,j,k;
for(i=3;i>0;i--)
{
P2=0x00; //點(diǎn)亮P1口所有LED,延時(shí)1000ms
delay(1000);
P2=0xff; //熄滅P1口所有LED,延時(shí)1000ms
delay(1000);
}
for(i=3;i>0;i--) //奇偶交替成流水燈狀態(tài)
{
P2=0x55;
delay(1000);
P2=0xaa;
delay(1000);
}
P2=0xff;
delay(300);
for(i=3;i>0;i--) //P1口單燈左移流水,循環(huán)3次
{
k=0xfe;
for(j=0;j<8;j++)
{
P2=k;
delay(200);
k=_crol_(k,1);
}
}
P2=0xff;
delay(300);
for(i=3;i>0;i--) //P1口單燈右移流水,循環(huán)3次
{
k=0xfe;
for(j=0;j<8;j++)
{
P2=k;
delay(300);
k=_cror_(k,1);
}
}
P2=0xff;
delay(300);
for(j=0;j<3;j++) //P1口由兩邊向中間流水,循環(huán)3次
{
P2=0x7e;
delay(300);
P2=0xbd;
delay(300);
P2=0xdb;
delay(300);
P2=0xe7;
delay(300);
}
P2=0xff;
delay(300);
for(j=0;j<3;j++) //P1口由中間向兩邊流水,循環(huán)3次
{
P2=0xe7;
delay(300);
P2=0xdb;
delay(300);
P2=0xbd;
delay(300);
P2=0x7e;
delay(300);
}
P2=0xff;
delay(300);
k=0xfe; //賦初值
for(j=0;j<8;j++)
{
for(i=0;i<8-j;i++) //左移
{
P2=k; //點(diǎn)亮小燈
delay(200); //延時(shí)200毫秒
k=_crol_(k,1); //將a變量循環(huán)左移一位
}
k=_crol_(k,j); //補(bǔ)齊,方便下面的左移一位
P2=0xff; //全部關(guān)閉
k=k<<1; //左移一位讓多一個燈點(diǎn)亮
}
}
}
void delay(uint xms) //延時(shí)函數(shù)
{
uint i,j;
for(i=xms;i>0;i--) //外層for中變量為多少,就延時(shí)約多少ms
for(j=110;j>0;j--); //當(dāng)內(nèi)層for語句中變量恒定值為110時(shí)
}
作者: 51mcu 時(shí)間: 2012-3-20 17:22
最好增加一些簡單的功能說明.
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |