标题: 51单片机时间中断怎么设定 [打印本页]

作者: zhangxl    时间: 2022-7-17 16:34
标题: 51单片机时间中断怎么设定
新手求教,如题,打算设定一个50mS的时间中断怎么设定,TL和TH的值是怎么计算的?


作者: zhangxl    时间: 2022-7-17 16:35
补充一下TMOD该怎么设定?
作者: Y_G_G    时间: 2022-7-17 17:57
你是不应该问这个问题的,定时器是单片机学习最基础的知识点之一,你不会,那就说明你没有看这一章节的内容
你要做的不是找到这个代码,而是了解定时器的原理,然后自己写代码
就算是人家给你代码了,你也不一定能知道为什么这个要这样写,那个要那样写
这是12MHZ时钟下的代码,你看一下吧
void Timer0Init(void)                //50毫秒@12.000MHz
{
        AUXR &= 0x7F;                //定时器时钟12T模式
        TMOD &= 0xF0;                //设置定时器模式
        TL0 = 0xB0;                //设置定时初始值
        TH0 = 0x3C;                //设置定时初始值
        TF0 = 0;                //清除TF0标志
        TR0 = 1;                //定时器0开始计时
}
作者: 温xyz    时间: 2022-7-17 18:06
老式51单片机为12T单片机,一个机器周期需要12个时钟。假设晶振频率为12MHz,则一个机器周期是1uS,定时器工作方式1为16位计数方式,最多能计算65536微秒=65.536毫秒。你需要50毫秒,TH0=15536/256,TL0=15536%256。另外,如果需要更精确定时,就用方式2的8位重装方式吧。
作者: 温xyz    时间: 2022-7-17 18:10
zhangxl 发表于 2022-7-17 16:35
补充一下TMOD该怎么设定?

TMOD = 0X01 (T0工作在方式1)
TMOD = 0X02 (T0工作在方式2)
TMOD = 0X10 (T1工作在方式1)
TMOD = 0X20 (T1工作在方式2)
作者: xiaojin11111111    时间: 2022-7-17 23:36
b站上有很多关于51单边机学习的视频的,像基础篇定时器的配置,他们讲的还是很详细的,建议你可以去看看
作者: wpppmlah    时间: 2022-7-18 08:40
新手除了学习基础知识以外,日常还可以利用一些辅助软件进行定时器的设置,比如STC的ISP工具(STC芯片的固件下载软件)。
作者: zhangxl    时间: 2022-7-18 09:06
温xyz 发表于 2022-7-17 18:06
老式51单片机为12T单片机,一个机器周期需要12个时钟。假设晶振频率为12MHz,则一个机器周期是1uS,定时器 ...

非常感谢!我已经调试成功了
作者: zhangxl    时间: 2022-7-18 09:07
xiaojin11111111 发表于 2022-7-17 23:36
b站上有很多关于51单边机学习的视频的,像基础篇定时器的配置,他们讲的还是很详细的,建议你可以去看看

谢谢您的推荐
作者: zhxiufan    时间: 2022-7-18 14:39
50毫秒定时的话,定时器必须设置为方式1,也就是16位定时器模式,51单片机是溢出时申请中断的,所以50毫秒定时也即是50000微秒需要在一个“初值”基础上往上加知道溢出。如果使用12M晶振,那么初值就是65536-50000.到TH和TL上面就是
THn=(65536-50000)/256;
TLn=(65536-50000)%256;
TMOD=0x01;
作者: hb_lhw    时间: 2022-7-18 16:31
我用的是STC的单片机,他们提供的ISP软件里,有关于波特率、定时器、软件延时等各种代码,方便调用。

新建文本文档.jpg (51.91 KB, 下载次数: 85)

新建文本文档.jpg





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1