中级会员
- 积分
- 298
- 金钱
- 298
- 注册时间
- 2015-1-30
- 在线时间
- 40 小时
|
5金钱
#define MAIN_Fosc 22118400L //定义主时钟
#define SysTick 10000 // 次/秒, 系统滴答频率, 在4000~16000之间
#define Timer0_Reload (65536UL - ((MAIN_Fosc + SysTick/2) / SysTick)) //Timer 0 中断频率, 在config.h中指定系统滴答频率, 在4000~16000之间.
AUXR = 0x80; //Timer0 set as 1T, 16 bits timer auto-reload,
TH0 = (u8)(Timer0_Reload / 256);
TL0 = (u8)(Timer0_Reload % 256);
ET0 = 1; //Timer0 interrupt enable
TR0 = 1; //Tiner0 run
这些代码是STC试验箱里面的代码 是在官网下载的 请问#define Timer0_Reload (65536UL - ((MAIN_Fosc + SysTick/2) / SysTick))这个是怎么写的 虽然我知道是什么意思
我想问的是 这句代码怎么推导来的! 假如我要定时300US怎么写这个宏呢?
|
最佳答案
查看完整内容[请看2#楼]
1、STC单片机的定时器部分是自己设计的,跟通常8051单片机不同所以计算方式不同。具体在技术手册上有详细说明。根据代码只知道你的单片机是工作在 1T模式,16位定时器。
2、附上个人意见,仅供参考,勿怪:2.1、你问问题不说是哪款单片机?怎么解决?2.2、做开发成长学习的过程是 问题--思考--查找答案--验证答案--解决问题!你问的这种问题在芯片的技术手册上有详细说明。看过即可解决。在论坛是无法问出所以然的。还是建议以自 ...
|