搜索
bottom↓
回复: 4

请教:SmallRTOS51 系统定时器0 初始化为什么是 TH0 = 0x0; TL0 = 0x0;

[复制链接]

出0入0汤圆

发表于 2009-8-28 11:30:56 | 显示全部楼层 |阅读模式
TMOD = (TMOD & 0XF0) | 0X01;
        TL0 = 0x0;      // 这儿为什么是0
        TH0 = 0x0;      //这儿为什么也是0
        TR0 = 1;
        ET0 = 1;

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2009-8-28 11:35:50 | 显示全部楼层
计数到0xffff才溢出中断,用T0做系统时钟?

出0入0汤圆

 楼主| 发表于 2009-8-28 12:00:43 | 显示全部楼层
我刚才看了一下 陈明计给的几个 example 发现里面 timer0 初始化都是:

TMOD = (TMOD & 0XF0) | 0X01;
TL0 = 0x0;      // 这儿为什么是0
TH0 = 0x0;      //这儿为什么也是0

而且在配置文件 os_cfg.h 中 有这么一行: #define OS_TICKS_PER_SEC        10      /* 声明1秒系统系统节拍数 */
但是宏定义OS_TICKS_PER_SEC 没有再在其它地方出现过,那还要它做什么呢?
还有就是 系统时钟 timer0 的运行机制到底是怎么回事,他写的那本书(嵌入式实时操作系统small RTOS51原理及应用)中好像也没有详细说明。

                              望诸位同仁 看在党国的份上,一定要拉兄弟一把啊!!!

出0入0汤圆

发表于 2009-8-28 14:46:54 | 显示全部楼层
看在党国的份上,兄弟我帮你一把。
你看文件os_cpu.h里#define OS_TIME_ISR 里定义,这个宏定义了要使用那个定时器作为系统时钟。
系统时钟函数在os_cpu.c里这里会用到由OS_TICKS_PER_SEC和fsoc 计算出来的初始化值。
初始化时候定时器初值置零没有什么实际原因,你也可以置为初值(我就是这么用)。也就是说在这里值可以随意。

出0入0汤圆

发表于 2015-7-19 14:05:24 | 显示全部楼层
本帖最后由 gagaguojia 于 2015-7-19 15:05 编辑

自己可以改的
比如我用12c5a60s2 我是这么改的
tmer0初始化 我用16位计数 12T模式 10ms中断一次

void Timer0Init(void)                //10毫秒@11.0592MHz
{
        AUXR &= 0x7F;                //定时器时钟12T模式
        TMOD &= 0xF0;                //设置定时器模式
        TMOD |= 0x01;                //设置定时器模式
        TL0 = 0x00;                //设置定时初值
        TH0 = 0xDC;                //设置定时初值
        TF0 = 0;                //清除TF0标志
        TR0 = 1;                //定时器0开始计时
}
OS_CFG.H 里
#define OS_TICKS_PER_SEC        100         /* 声明1秒系统系统节拍数                                    */
#define EN_USER_TICK_TIMER      1           /* 禁止(0)或允许(1)系统定时中断调用用户函数UserTickTimer()  */
#define EN_TIMER_SHARING        1           /* 禁止(0)或允许(1)定时器中断调用OSTimeTick()               */
#define TICK_TIMER_SHARING      1           /* 定义进入多少次硬件中断为一次系统定时器软中断             */

然后

在main里 把滴答中断里的钩子函数添上
void UserTickTimer(void)
{
        TH0 = 0xDC;                //设置定时初值
        TL0 = 0x00;                //设置定时初值
}

这样滴答周期就是10ms了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-6 07:38

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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