1.细节
上一讲里,我们知道TH0和TL0合成的“16位的变量”的初值最小要为0,不能是负数,
所以我们要满足:65536-( x/(12/11059200) )>=0。
解得x<= 0.071111秒=71.111毫秒。
也就是用定时器的工作模式1最长的定时时间为71毫秒左右而已。
2.定时器开关
首先定时器也是有开关的,这个相当于我们的导管是否打开让水流进“试管”里。
因为我们用的是定时器0,TCON^4这个位就是控制定时器0是否打开或关闭,所以“TR0=1;”就是打开了定时器开始计时,“TR0=0;”是关闭了定时器计时功能。
只要打开了定时器,TH0和TL0合成的“16位的变量”就会每过(12/11059200)秒就自加1,直到定时器溢出。
3.溢出标志
我们的定时器0一旦溢出,TCON^5就会被置1(TF0==1),如果我们不使用中断函数也是可以在主函数里等待判断“if(TF0==1)”。TF0跟外部中断0的IE0一样,被置1了需要软件清零。
4.工作模式1的代码
这里我们用定时器0来实现间隔50ms的流水灯实验
#include #include void main() { u8 i=0; LED_Init(); //初始化LED硬件模块 TMOD = 0x01; //设置定时器0为工作模式1 TH0 = 0x4C; //设置定时时间为50ms TL0 = 0x00; TR0 = 1; //启动定时器0 while(1) { if (TF0 == 1) //判断定时器0是否溢出,每隔50ms就可以进入一次这个if语句 { TF0 = 0; //定时器0溢出后,清0溢出标志 TH0 = 0x4C; //重新赋初值,保证下次溢出间隔时间还是50ms TL0 = 0x00; P0=~(0x01< i++; } if(i>=8)i=0; } } 5.定时器1的使用 如果我们用定时器1实现上处代码同样的功能,那么TMOD只要初始化为“TMOD=0x10;” 还有把TH0,TL0,TR0,TF0这些全部改为TH1,TL1,TR1,TF1即可,所以说这两个定时器的工作原理都是一样的。 #include #include void main() { u8 i=0; LED_Init(); //初始化LED硬件模块 TMOD = 0x10; //设置定时器1为工作模式1 TH1 = 0x4C; //设置定时时间为50ms TL1 = 0x00; TR1 = 1; //启动定时器1 while(1) { if (TF1 == 1) //判断定时器1是否溢出,每隔50ms就可以进入一次这个if语句 { TF1 = 0; //定时器1溢出后,清0溢出标志 TH1 = 0x4C; //重新赋初值,保证下次溢出间隔时间还是50ms TL1 = 0x00; P0=~(0x01< i++; } if(i>=8)i=0; } }
上一篇:51单片机-定时时长的作法
下一篇:51单片机-定时器工作模式2
推荐阅读最新更新时间:2024-11-16 21:08
推荐帖子
- 求地铁安全门控制系统原理图及电脑与安全门通信连接方式
- 我公司专做地铁安全门和BRT安全门,我负责维护与维修。目前有很多通讯故障公司还没有解决。希望高手指点谢谢!另外本人想学习安全门系统连接原理与电脑(控制盘)与电机连接的详细原理图!非常感谢!求地铁安全门控制系统原理图及电脑与安全门通信连接方式一个问题一个问题单独提出吧,大家尽量帮忙。地铁安全门和BRT安全门这可是大市政工程的大项目哦这种安全门系统连接原理与电脑(控制盘)与电机连接不是制造厂家已经做好的么,楼主是研发这块的?
- dongjinliu 工控电子
- 新人报到
- 新人报到新人报到:handshake新人回复0消灭.多多关照
- 东海扬尘 TI技术论坛
- LM3S8962串口通讯问题
- 我想用LM3S8962和一个51单片机进行串口通讯,51单片机发出的是7个16进制的数,那到底怎样从LM3s8962上把这个16进制的数读取出来呢??LM3S8962串口通讯只能接受字符吗??LM3S8962串口通讯问题
- 我愿意漂泊 TI技术论坛
- 相位可调射频有源移相器设计
- 摘要:采用PIN管和射频运算放大器构成中心频率100MHz的二级一阶可调移相器.相位调节范围0-240度,输出信号幅度变化小于1dB.相位可调射频有源移相器设计
- JasonYoo RF/无线
- 求个低频声音信号接收器(2KhZ 以下信号)
- 要求距离5米内接收到信号,还有那个电感怎么做?求救。。。。。。。求个低频声音信号接收器(2KhZ以下信号)话筒加放大,很简单的。至于“那个电感”,不知道你要什么电感。
- zhuli_num1 RF/无线
- 请教前辈,光强经过AD转换通过串口输出到电脑的值,如何才能决定这些值的意义。
- 有一块电路板,主要功能是要将光敏探头的数据经过AD转换输出,板上有51单片机,AD16bit转换器等器件,通过串口连接电脑。目前板子已经制好,但单片机没写程序进去。通过串口调试助手发现,串口有数据输出。小弟需要实现一个软件,接收串口的数据,记录数据大小,画一个图。但是由于没有AD转换方面的经验,不知道出来的数据如何截取才是完整单元。所以不知如何通信帧需要包含哪些数据,导致整个程序不好下手。希望高手不吝赐教!请教前辈,光强经过AD转换通过串口输出到电脑的值,如何才能决定这些值的意义。简单协
- karise 嵌入式系统
设计资源 培训 开发板 精华推荐
- LT3758MSE 演示板,反激式,输入电压:18V 至 75V,输出电压:3.3V/3A,(3x3 QFN)
- LTC3859AHUHF 高效率、三路 24V/1V/1.2V 同步降压/升压转换器的典型应用电路(采用 12V 输入电压)
- 使用 ON Semiconductor 的 ADP3167 的参考设计
- LTC1871、2.5V 至 3.3V 输入、5.0V/2A 输出升压转换器
- OP295GSZ-REEL 4 mA 至 20 mA 电流回路变送器的典型应用
- 基于 LTC4410 的 USB 兼容充电器充分利用 USB 输入的可用功率
- 具有可编程软启动功能的 NCP59744 3.0 A、双轨极低压降线性稳压器的典型应用
- FRDM-KW24D512: 面向Kinetis® KW2x MCU的Freedom开发平台
- 【训练营】智能台式电脑开关
- MAX2170/MAX2171 DAB/T-DMB参考设计