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