查看: 1078|回复: 0
打印 上一主题 下一主题

点击此处下载pic单片机定时器0问题

[复制链接]
跳转到指定楼层
沙发
发表于 2015-3-26 16:15:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用PIC16F685这个型号,发现定时器0没有开启停止位(第一次玩这个单片机),而且写了个代码,发现定时器溢出标志一直没置位。用中断方式,中断也进不去大家给看看。
#include <pic16f685.h>
unsigned int i;

void Init_Fosc(void)
{
            OSCCON=0x67;//内部时钟 4M
}
void Init_GPIO(void)
{
      PORTC =0;
     TRISCbits.TRISC1=0; //RC1口设置成输出 用来控制继电器
      PORTCbits.RC1=0;
}
void Init_Timer0(void)
{
         OPTION_REG=0x87; //预分频为256
}

/*void interrupt isr(void)//中断程序,interrupt是个关键字说明该函数,是中断函数。
{

        i++;
         if(i==20)
         {
                     PORTCbits.RC1=1;
                 i=0;
         }
     INTCONbits.T0IF=0;//清零中断标志位 如果在离开中断程序前没有清零,程序将不停的中断。
     TMR0=61;//给TMR0付初始值61 ,开始下一个50ms计时做准备。

}*/
void main()
{
         unsigned char i;
         Init_Fosc();
         Init_GPIO();
         Init_Timer0();
//INTCONbits.GIE=1;//开启总中断
         INTCONbits.T0IF=0;//清零TMR0溢出中断标志位
//INTCONbits.T0IE=1;//开启TMR0溢出中断
        TMR0=61;//50ms
         while(1)
         {
                 if(T0IF==1)
                 {
                         i++;
                         T0IF=0;//清除T0IF中断标志位
                         TMR0=61;//设置中断初始值61为下次50ms定时做准备                                
                        if(i==20)
                         {
                                 i=0;
                                 RC1=0;
                         }
                         else
                         {
                                 RC1=1;
                         }
                 }

        }

}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

快速回复 返回顶部 返回列表