我用PIC12F675 定时器1 定时的误差随定定时的时间成对比

2020-02-06 10:35发布

#include"main.h"

uchar tt;
__CONFIG(0x3184);

void delayms(uint num)
{
        uint x,y;
        for(x=num;x>0;x--)
                for(y=108;y>0;y--);
}
void init(void)
{
        OPTION = 0x00;                                   //T0不分频,内部定时器,A口上拉使能 时钟
        CMCON=0Xff;                                            //关比较器
          ADON = 0;                                       //A/D转换关闭
          ANSEL=0;                                               //设置成数据口
          TRISIO=0x08;                                           //GPIO4 配置为输入引脚(三态) 0为输出,1为输入
          WPU=0X08;                                                //上啦寄存器        0为禁止上啦,1为上啦
          GPIO = 0xCf;                                           //I/O口拉高
                 
    PIE1=0X01;                                                //使能溢出中断
    TMR1H=0;
    TMR1L=0;
    T1CON=0X01;                                           //TIMER1使能
    TMR1IF=0;                                                //TMR1 溢出中断标志位
    PEIE=1;                                                        //外设中断使能位
    TMR1IE=1;                                                //TMR1 溢出中断使能位
    GIE=1;                                                        //开全局中断
}

void main ()
{
        uint i;
        init();
    while(1)
        {
               
//                i=((((uint)TMR1H)<<8)+TMR1L);
//                if(i>=100)
//                {  
//                        i=0;
//                        TMR1H=0;
//                    TMR1L=0;
//                    GPIO5=!GPIO5;
//                }
                NOP();
        }
       
       
}
void interrupt time1(void)
{
    if(INTF==1)
    {
       INTF=0;
                  //计数器加1
    }   
        if(TMR1IF==1)        //这样才可以判断中断;
    {
                 TMR1H=(65536-500)/256;
            TMR1L=(65536-500)%256;   
             TMR1IF=0;
             GPIO5=!GPIO5;
    }
   
}


有谁知道这是怎么回事不  我用的是内部4M的晶振 还是说晶振误差了。。。。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。