51单片机我要产生一个0.5ms的中断 初值是多少 怎么计算? 10
2个回答
展开全部
给你一个最简单的吧。
首先要知道系统时钟频率,假设用12MHz的晶振,那么系统的时钟频率Sclk就是12MHz,那么一个时钟周期为1/Sclk即1/(12MHz)。
对于传统的51单片机,比如STC89C52RC或者AT89C52等,1个机器周期T=12个时钟周期。
计一个数需要的时间为一个机器周期,所以T=12/Sclk=12/(12MHz)=1us,即计一个数要花1微秒的时间。
0.5ms产生一个中断,那么0.5ms里面有多少个1us呢
(0.5ms)/(1us)=500,即0.5ms里面有500个1us,即计数器计500个数的时间。
51单片机计数器溢出时才会产生中断,那么我们要预先填一些值到计数器里面。
假设我们选用计数器1工作方式1,即16位计数器,16位计数器从0计数到65535溢出,一共要计65535个数,我们要计500个就溢出,那就要预先填充65535-500个数。
所以
高八位TH1 = (65535-500)/256;
第八位TL1 = (65535-500)%256;
首先要知道系统时钟频率,假设用12MHz的晶振,那么系统的时钟频率Sclk就是12MHz,那么一个时钟周期为1/Sclk即1/(12MHz)。
对于传统的51单片机,比如STC89C52RC或者AT89C52等,1个机器周期T=12个时钟周期。
计一个数需要的时间为一个机器周期,所以T=12/Sclk=12/(12MHz)=1us,即计一个数要花1微秒的时间。
0.5ms产生一个中断,那么0.5ms里面有多少个1us呢
(0.5ms)/(1us)=500,即0.5ms里面有500个1us,即计数器计500个数的时间。
51单片机计数器溢出时才会产生中断,那么我们要预先填一些值到计数器里面。
假设我们选用计数器1工作方式1,即16位计数器,16位计数器从0计数到65535溢出,一共要计65535个数,我们要计500个就溢出,那就要预先填充65535-500个数。
所以
高八位TH1 = (65535-500)/256;
第八位TL1 = (65535-500)%256;
追问
11.0592呢
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询