打印
[技术问答]

赛元单片机SC92F7250定时器 问题:比传统快2倍?

[复制链接]
2064|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
赛元单片机SC92F7250定时器 问题:一下程序定时是准确的1s ,而不是500ms,难道赛元比传统的真快2倍!!!
先是keil 的设置:如图:

下面是定时器程序,主循环空
/*****************************************************
*函数名称:void Timer_Init(void)
*函数功能:T0/T1/T2初始化
*入口参数:void
*出口参数:void
*****************************************************/
void Timer_Init(void)
{
        TMCON = 0X07;    //------111 ;Timer0、Tiemr1和Tiemr2选择时钟Fsys
        //T0设置
        TMOD |= 0x01;                //0000 0001;Timer0设置工作方式1(16位定时/计数器模式)
        TH0 =(65536 - 12000)/256;
        TL0 =(65536 - 12000)%256;    //溢出时间:时钟为Fsys,则12000*(1/Fsys)=1ms;

        ET0 = 1;//定时器0允许
        TR0 = 1;//打开定时器0
}

/**************************************************
*函数名称:void timer0/1/2() interrupt 1/3/5
*函数功能:定时器中断产生方波
*入口参数:void
*出口参数:void
**************************************************/
void timer0() interrupt 1
{
        static unsigned int t;
       
        TH0 =(65536 - 12000)/256;
  TL0 =(65536 - 12000)%256;
        t++;
        if(t==500)
        {
                t=0;
                P26=~P26;
        }
}

keil 设置.png (17.16 KB )

相关设置

相关设置

使用特权

评论回复

相关帖子

沙发
黄进盛|  楼主 | 2019-6-20 18:53 | 只看该作者
还有一个是如果 keil或者Pro51 设置WDT 是Enable的话,下载进去的程序更是让人怀疑人生,整了一个下午,这里做个Flag

使用特权

评论回复
评论
knk 2019-9-17 22:06 回复TA
程序里面有清看门狗就没事了,打开了看门狗却不去清,这是软件复位才会用的方法。 
板凳
风凌天| | 2019-9-17 12:05 | 只看该作者
TH0 =(65536 - 12000)/256;         TL0 =(65536 - 12000)%256;

使用特权

评论回复
地板
风凌天| | 2019-9-17 12:06 | 只看该作者
这个是什么意思啊

使用特权

评论回复
5
风凌天| | 2019-9-17 12:09 | 只看该作者
这个是把12000分配在高低位吗?看不懂

使用特权

评论回复
6
knk| | 2019-9-17 22:05 | 只看该作者
TMCON寄存器可以设置定时器的速度是1T还是12T,普通51单片机是12T,赛元可以设置成1T的,所以赛元单片机定时器比普通单片机快了12倍。

使用特权

评论回复
7
黄进盛|  楼主 | 2019-9-18 08:34 | 只看该作者
风凌天 发表于 2019-9-17 12:09
这个是把12000分配在高低位吗?看不懂

对,本1秒应该是10000的,但是我用示波器测试12000才是1秒,我用的是赛元的7520M,也许我当时测得马虎,你有条件也可以试试看

使用特权

评论回复
8
风凌天| | 2019-9-19 00:49 | 只看该作者
我其实是看不懂这是怎么分配在高低位的。就是不理解这个公式的意思

使用特权

评论回复
9
knk| | 2019-9-19 10:25 | 只看该作者
定时初值 = 定时计数溢出值 - 定时时间 * 系统时钟 / 系统时钟分频
比如12M的系统时钟,12分频,定时0.000125秒,使用定时器0的模式2,8位自动重装
TH0 = TL0 = 256 - 125;//125 = 0.000125秒 * 12000000 / 12
再比如8M的系统时钟,12分频,定时0.000125秒,使用定时器0的模式2,8位自动重装
TH0 = TL0 = 256 - 83;//83 = 0.000125秒 * 8000000 / 12
再比如16M的系统时钟,12分频,定时0.01秒,使用定时器0的模式1,16位定时器
TL0 = (65536 - 13333) % 256;//1333 = 0.01 * 16000000 /12
TH0 = (65536 - 13333) / 256;

使用特权

评论回复
10
风凌天| | 2019-9-19 22:33 | 只看该作者
感谢楼主,因为是刚接触这行,所以有很多不懂的地方

使用特权

评论回复
11
qq986433936| | 2019-11-5 13:12 | 只看该作者
用STC单片机的下载程序中的定时器计算器来算,我经常这么用

使用特权

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

本版积分规则

15

主题

68

帖子

2

粉丝