PIC16F628A LED流水燈示例程序
#include
__CONFIG(0x3f38);//看門狗關,內(nèi)部RC震蕩,RA6/RA7做I/O
//-----------------------------------
//延時函數(shù)
voiddelay()
{
inti;//定義循環(huán)變量
for(i=5000;i>0;i--)//循環(huán)次數(shù)控制
{
NOP();//消耗一個指令周期的時間
NOP();
}
}
//----------------------------------
//初始化函數(shù)
voidinit()
{
TRISA=0X00;//設置A口為輸出
TRISB=0X00;//設置B口為輸出
}
//---------------------------------
//亮燈函數(shù)
voidLED()
{
chari;//設置循環(huán)變量
while(1)
{
PORTA=1;//點亮RA0
delay();
delay();
delay();
PORTA=2;//點亮RA1
delay();
delay();
delay();
PORTA=4;//點亮RA2
delay();
delay();
delay();
PORTA=8;//點亮RA3
delay();
delay();
delay();
PORTA=0X40;//點亮RA6
for(i=2;i>0;i--)//循環(huán)兩次(RA6-RA7)
{
delay();
delay();
delay();//調(diào)用3次延時函數(shù),確定流水燈閃爍的快慢
PORTA=PORTA<<1;//點亮下一位LED
}
PORTA=0;//清除A口所有顯示
PORTB=1;//點亮RB0
for(i=8;i>0;i--)//循環(huán)8次(RB0-RB7)
{
delay();
delay();
delay();
PORTB=PORTB<<1;
}
PORTB=0;//清除B口所有顯示
}
}
//---------------------------------------
//主函數(shù)
voidmain()
{
init();//調(diào)用初始化函數(shù)
led();//調(diào)用亮燈函數(shù)
}