打印
[其它应用]

中颖SH79F1615定时器0用内部27MRC定时频率偏差很大的问题??

[复制链接]
1071|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
binlz|  楼主 | 2018-5-19 00:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在想用sh79f1615的time0实现10mS定时中断,定时器甚至为工作方式1,系统时钟为内部27Mrc。硬件电路,没有接外部晶振,XTAL1和XTAL2悬空用JET51仿真器,通过ISP51软件对整个flash区域编程下载程序,代码选项“OP_OSC”设置为oscillator1 is internal 27M RC,oscillator2 is disabled. 但是测得的中断频率几乎是10mS的四倍。请指出问题出在哪?

代码如下:



//====时钟分频=====   
#define     CLK_DIV1    0X00  
#define     CLK_DIV2    0X01  
#define     CLK_DIV4    0X02  
#define     CLK_DIV12   0X03

#define Bank0 INSCON &= 0xbf
#define Bank1 INSCON |= 0x40

//时钟通道2  
  
void Init_Clk2(unsigned char Pscr)  
{  
        unsigned int i;
    Bank0;  
       
    CLKCON = 0X00 ;  
    CLKCON |= (Pscr<<5) ;//分频设置  
         
    CLKCON |= (1<<3) ;    //打开OSCXCLK   
    for(i=60900;i>0;i--) ;
    CLKCON |= (1<<2) ;    // 把它作为振荡(OSCSCLK)时钟  
   
}  


unsigned int uiSysTime = 0;
void time0_Initial(void)
{
       
        IEN0 = 0xc2;                        //打开定时器0中断和总中断

        TMOD = 0x01;                        //设置Timer0工作方式为方式1
        TCON1 = 0x04;                        //将系统时钟作为定时器0的时钟源         
        TL0 = 0x1b;                        //设置Timer0定时器初值为0xa81b,10mS溢出中断一次
        TH0 = 0xa8;        TR0 = 1;                                //打开Timer0
}
void        Timer0_ISP(void) interrupt 1
{
        EA        =        0;               
        TF0  = 0;                                                       
        //-------------------
        uiSysTime++;
        if((uiSysTime%100==0)&&(uiSysTime != 0))
        {
           P0=P0^(1<<5);
        }

        //-------------------
        EA        =        1;
}
void main(void)
{          

        Init_Clk2(CLK_DIV2);       
        time0_Initial();

       
        while(1)  
        {
                 
       
        }
  
}

///////////////////---------------------///////////////////////////

沙发
xyz549040622| | 2018-5-19 09:22 | 只看该作者
差四倍,那就是你的取值错了。你可以再取个5ms试试,说不定还是正好差四倍。

使用特权

评论回复
板凳
binlz|  楼主 | 2018-5-19 10:15 | 只看该作者
本帖最后由 binlz 于 2018-5-19 10:47 编辑
xyz549040622 发表于 2018-5-19 09:22
差四倍,那就是你的取值错了。你可以再取个5ms试试,说不定还是正好差四倍。 ...

请问内部的高频27M RC是如何配置的;若系统时钟为27M Hz;定时器分频系数也是1/1,计数器0是每秒计数27M次吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝