PIC16F785 LED流水灯程序
扫描二维码
随时随地手机看文章
#include
__CONFIG(0x33f4);
//看门狗关,复位脚做复位,内部RC振荡,RA4/RA5做I/O
//------------------------------------
//延时函数
voiddelay()
{
inti;//定义循环变量
for(i=5000;i>0;i--)//循环次数控制
{
NOP();//消耗一个指令周期时间
NOP();
}
}
//------------------------------------
//初始化函数
voidinit()
{
TRISA=0X00;//设置A口为输出
TRISC=0X00;//设置C口为输出
TRISB=0X00;
}
//------------------------------------
//亮灯函数
voidLED()
{
chari;//设置循环变量
while(1)
{
PORTA=1;//点亮RA0
for(i=3;i>0;i--)//循环次数(RA0-RA2)
{
delay();
delay();
delay();//调用3次延时函数
PORTA=PORTA<<1;//点亮下一位LED
}
PORTA=0X10;//点亮RA4
for(i=2;i>0;i--)//循环2次(RA4-RA5)
{
delay();
delay();
delay();
PORTA=PORTA<<1;
}
PORTA=0;//清除A口的所有显示
PORTB=0X10;//点亮RC0
for(i=4;i>0;i--)//循环6次(RB0-RB5)
{
delay();
delay();
delay();
PORTB=PORTB<<1;
}
PORTB=0x40;//清除所有RB口的显示
PORTC=1;//点亮RC0
for(i=8;i>0;i--)//循环6次(RB0-RB5)
{
delay();
delay();
delay();
PORTC=PORTC<<1;
}
PORTC=0;//清除所有RB口的显示
}
}
//--------------------------------------
//主函数
voidmain()
{
init();//调用初始化函数
led();//调用亮灯函数
}