
大侠你好,我刚学PIC单片机,学了个程序有点问题,能帮我看看吗?感激不尽。
#include<pic.h>unsignedchari,sec;voidinit(){TRISC5=0;//C5输出模式T0CS=0;//内部时钟(定时器模式)PSA=...
#include <pic.h>
unsigned char i,sec;
void init()
{
TRISC5=0; //C5输出模式
T0CS=0; //内部时钟(定时器模式)
PSA=0; //预分频定时器
PS2=0; //1:4预分频 250*4=10ms
PS1=0;
PS0=1;
GIE=1; //全局中断使能
T0IE=1; //定时器中断使能
T0IF=0; //TO中断标志位清零
TMR0=6; //T0赋初值
RC5=1;
}
void main()
{
init();
while(1);
}
void interrupt tmr1()
{
if(T0IF==1)
{
T0IF=0; //标志位清零
i++;
TMR0=6;
if(i==100)//1S
{
i=0;
sec++;
if(sec==100)//10S
{
sec=0;
RC5=!RC5;
}
}
}
} 展开
unsigned char i,sec;
void init()
{
TRISC5=0; //C5输出模式
T0CS=0; //内部时钟(定时器模式)
PSA=0; //预分频定时器
PS2=0; //1:4预分频 250*4=10ms
PS1=0;
PS0=1;
GIE=1; //全局中断使能
T0IE=1; //定时器中断使能
T0IF=0; //TO中断标志位清零
TMR0=6; //T0赋初值
RC5=1;
}
void main()
{
init();
while(1);
}
void interrupt tmr1()
{
if(T0IF==1)
{
T0IF=0; //标志位清零
i++;
TMR0=6;
if(i==100)//1S
{
i=0;
sec++;
if(sec==100)//10S
{
sec=0;
RC5=!RC5;
}
}
}
} 展开
3个回答
2012-02-29
展开全部
这是一个计时器,类似于时钟的一个程序,用TMR0延时10ms的基本延时,对1s(延时100次)和10秒计数,每达到10s时,引脚RC5的电平翻转(即高变低,低变高,这个引脚可能是接发光管).
变量i就是累计延时10ms的次数,sec就累计秒数.
程序中采用TMR0中断方式,所以表面上看是死循环,实际是每隔10ms中断一次,进入中断服务程序interrupt tmr1().
初始化程序void init()是对定时器TMR0的分频比设计,引脚RC5的设置,中断的设置.
变量i就是累计延时10ms的次数,sec就累计秒数.
程序中采用TMR0中断方式,所以表面上看是死循环,实际是每隔10ms中断一次,进入中断服务程序interrupt tmr1().
初始化程序void init()是对定时器TMR0的分频比设计,引脚RC5的设置,中断的设置.
来自:求助得到的回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询