標題: 單片機做流水燈C程序 [打印本頁]
作者: liuyang 時間: 2012-3-19 03:22
標題: 單片機做流水燈C程序
程序原是控制P1口現在經我改成P2口,學單片機的你 知道怎么改的......廢話不多說 下面是原代碼:
#include<reg52.h> //包含頭文件
#include<intrins.h> //包含有左右循環移位子函數的庫
#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; //點亮P1口所有LED,延時1000ms
delay(1000);
P2=0xff; //熄滅P1口所有LED,延時1000ms
delay(1000);
}
for(i=3;i>0;i--) //奇偶交替成流水燈狀態
{
P2=0x55;
delay(1000);
P2=0xaa;
delay(1000);
}
P2=0xff;
delay(300);
for(i=3;i>0;i--) //P1口單燈左移流水,循環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口單燈右移流水,循環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口由兩邊向中間流水,循環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口由中間向兩邊流水,循環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; //點亮小燈
delay(200); //延時200毫秒
k=_crol_(k,1); //將a變量循環左移一位
}
k=_crol_(k,j); //補齊,方便下面的左移一位
P2=0xff; //全部關閉
k=k<<1; //左移一位讓多一個燈點亮
}
}
}
void delay(uint xms) //延時函數
{
uint i,j;
for(i=xms;i>0;i--) //外層for中變量為多少,就延時約多少ms
for(j=110;j>0;j--); //當內層for語句中變量恒定值為110時
}
作者: 51mcu 時間: 2012-3-20 17:22
最好增加一些簡單的功能說明.
歡迎光臨 (http://www.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |