完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
本帖最后由 进无止境 于 2016-1-27 14:51 编辑
void UartRxMonitor(unsigned char ms) { static unsigned char cntbkp=0; static unsigned char idletmr=0; if(cntRxd>0) //接收计数器大于零时,监控总线空闲时间 { if (cntbkp!=cntRxd) //接收计数器改变,即刚接收到数据时,清零空闲计时 { cntbkp=cntRxd; idletmr=0; } else { if(idletmr<30) //接收计数器未改变,即总线空闲时,累积空闲时间 { idletmr+=ms; if(idletmr>=30) //空闲时间超过 30ms 即认为一帧命令接收完毕 { cmdarrived=1; //设置命令到达标志 } } } } else { cntbkp=0; } } void ConfigTimer0(unsigned int ms) //T0 配置函数 { unsigned long tmp; tmp = 12000000/12; //定时器计数频率 tmp = (tmp*ms)/1000; //计算所需的计数值 tmp = 65536-tmp; //计算定时器重载值 tmp = tmp+34; //修正中断响应延时造成的误差 T0RH = (unsigned char)(tmp>>8); //定时器重载值拆分为高低字节 T0RL = (unsigned char)tmp; TMOD &= 0xF0; //清零 T0 的控制位 TMOD |= 0x01; //配置 T0 为模式 1 TH0 = T0RH; //加载 T0 重载值 TL0 = T0RL; ET0 = 1; //使能 T0 中断 TR0 = 1; //启动 T0 } void InterruptTimer0() interrupt 1 //T0 中断服务函数 { TH0 = T0RH; //定时器重新加载重载值 TL0 = T0RL; UartRxMonitor(1); //串口接收监控 } STC89C52RC 单片机,定时器 1 作为波特率发生器,方式 1 下的波特率发生器必须使用定时器 1 的模 式 2,红色部分到底想干嘛? |
|
相关推荐
5个回答
|
|
|
本帖最后由 ahliar 于 2016-1-28 19:27 编辑
你可以试试用定时器产生一定频率的波形,用示波器看看, 在定时中断里面处理的东西越多,定时越不精确。 具体为什么是34 我也不清楚, 我猜是 1、根据实际测量出来的结果进行调整吧。 2、根据代码运行的延时而修正的吧,比如运行一个_nop_()就是1uS之类的。
最佳答案
|
|
|
|
|
|
红色部分的作用是把你需要的中断触发时间(毫秒)配置到定时器T0。
这里使用定时器最大值从T0R的加载值开始计数一直到65535溢出,所以触发的计数时间是65536-tmp |
|
|
|
|
|
你这是定时器0啊,就简单的定时器配置吧,和波特率什么的应该没有关系吧。
tmp = 12000000/12; //定时器计数频率------跟你的单片机(1T/12T),晶振有关 tmp = (tmp*ms)/1000; //计算所需的计数值-----1s=1000ms 以下就是计算定时的值了= tmp = 65536-tmp; //计算定时器重载值- tmp = tmp+34; //修正中断响应延时造成的误差 [color=Red] T0RH = (unsigned char)(tmp>>8); //定时器重载值拆分为高低字节 T0RL = (unsigned char)tmp; |
|
|
|
|
ahliar 发表于 2016-1-27 22:54 修正误差那34怎么来的? |
|
|
|
|
|
多谢各位帮忙,不胜感激
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
265 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
789 浏览 0 评论
1306 浏览 2 评论
787 浏览 0 评论
【RA4M2-SENSOR开发板评测】Analogue+Timers综合测试
1587 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16901 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 01:50 , Processed in 0.802937 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2863