中级会员 
   
	- 积分
 - 299
 
        - 金钱
 - 299 
 
       - 注册时间
 - 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、做开发成长学习的过程是 问题--思考--查找答案--验证答案--解决问题!你问的这种问题在芯片的技术手册上有详细说明。看过即可解决。在论坛是无法问出所以然的。还是建议以自 ... 
 
 
 
 
 
 
 |