家园首页 Php4手册 我的相册 家园下载 个人文集 给我留言
我形我塑,网络相册,www.5x54.com 相册 相册 心情相册,少女相册 免费申请,我形我塑免费相册
 家园 个人文集   http://www.5x54.com
 


51单片机12M和11.0592M晶振定时器初值TL0和TH0的3CB0计算


作者:网上收集    点击: 读取中...

at89s52(%$$784#^67)心情家园www.bbsdiy.net,晶振频率12m  (%$$784#^67)心情家园www.bbsdiy.net
其程序如下:  (%$$784#^67)心情家园www.bbsdiy.net
引用代码:#include<stdio.h>  (%$$784#^67)心情家园www.bbsdiy.net
#include<reg51.h>  (%$$784#^67)心情家园www.bbsdiy.net
(%$$784#^67)心情家园www.bbsdiy.net
void timer0_init()  (%$$784#^67)心情家园www.bbsdiy.net
(%$$784#^67)心情家园www.bbsdiy.net
TMOD=0x01;//方式1  (%$$784#^67)心情家园www.bbsdiy.net
TL0=0xb0;  (%$$784#^67)心情家园www.bbsdiy.net
TH0=0x3c;  (%$$784#^67)心情家园www.bbsdiy.net
TR0=1;  (%$$784#^67)心情家园www.bbsdiy.net
ET0=1;  (%$$784#^67)心情家园www.bbsdiy.net
(%$$784#^67)心情家园www.bbsdiy.net
(%$$784#^67)心情家园www.bbsdiy.net
void timer0_ISR(void) interrupt 1  (%$$784#^67)心情家园www.bbsdiy.net
(%$$784#^67)心情家园www.bbsdiy.net
TL0=0xb0;  (%$$784#^67)心情家园www.bbsdiy.net
TH0=0x3c;//50ms中断一次  (%$$784#^67)心情家园www.bbsdiy.net
single++;  (%$$784#^67)心情家园www.bbsdiy.net
if(single==20)  (%$$784#^67)心情家园www.bbsdiy.net
{ kk++;  (%$$784#^67)心情家园www.bbsdiy.net
single=0;  (%$$784#^67)心情家园www.bbsdiy.net
(%$$784#^67)心情家园www.bbsdiy.net
(%$$784#^67)心情家园www.bbsdiy.net
void main()  (%$$784#^67)心情家园www.bbsdiy.net
(%$$784#^67)心情家园www.bbsdiy.net
int kk=0;//计数器  (%$$784#^67)心情家园www.bbsdiy.net
int single=0;  (%$$784#^67)心情家园www.bbsdiy.net
timer0_init();  (%$$784#^67)心情家园www.bbsdiy.net
(%$$784#^67)心情家园www.bbsdiy.net
(%$$784#^67)心情家园www.bbsdiy.net
(%$$784#^67)心情家园www.bbsdiy.net
TL0=0xb0;  (%$$784#^67)心情家园www.bbsdiy.net
TH0=0x3c;  (%$$784#^67)心情家园www.bbsdiy.net
这两个是怎么算出来得 (%$$784#^67)心情家园www.bbsdiy.net
如果晶振不是12Mhz  (%$$784#^67)心情家园www.bbsdiy.net
是11.0592 MHz  (%$$784#^67)心情家园www.bbsdiy.net
怎么算  (%$$784#^67)心情家园www.bbsdiy.net
(%$$784#^67)心情家园www.bbsdiy.net
12M的晶振每秒可产生1M个机器周期(%$$784#^67)心情家园www.bbsdiy.net,50ms就需要50000个机器周期(%$$784#^67)心情家园www.bbsdiy.net,定时器在方式1工作(%$$784#^67)心情家园www.bbsdiy.net,是16位计数器(%$$784#^67)心情家园www.bbsdiy.net,最大值为65536(%$$784#^67)心情家园www.bbsdiy.net,所以需设置初值15536(%$$784#^67)心情家园www.bbsdiy.net,即3CB0H(10进制15536转换成16进制数3CB0)(%$$784#^67)心情家园www.bbsdiy.net,所以TH0=0x3c(%$$784#^67)心情家园www.bbsdiy.net,TL0=0xb0。 (%$$784#^67)心情家园www.bbsdiy.net
(65536-50000周期=初值15536) (%$$784#^67)心情家园www.bbsdiy.net
高位就是TH0的值(%$$784#^67)心情家园www.bbsdiy.net,低位为TL0的值 (%$$784#^67)心情家园www.bbsdiy.net
11.0592M的晶振每秒可产生0.9216M个机器周期(%$$784#^67)心情家园www.bbsdiy.net,50ms就需要46080个机器周期(%$$784#^67)心情家园www.bbsdiy.net,定时器在方式1工作(%$$784#^67)心情家园www.bbsdiy.net,是16位计数器(%$$784#^67)心情家园www.bbsdiy.net,最大值为65536(%$$784#^67)心情家园www.bbsdiy.net,所以需设置初值19456(%$$784#^67)心情家园www.bbsdiy.net,即4C00H(%$$784#^67)心情家园www.bbsdiy.net,所以TH0=0x4c(%$$784#^67)心情家园www.bbsdiy.net,TL0=0x00。  (%$$784#^67)心情家园www.bbsdiy.net
(%$$784#^67)心情家园www.bbsdiy.net
其实很简单(%$$784#^67)心情家园www.bbsdiy.net,不管你使用多大的晶振(%$$784#^67)心情家园www.bbsdiy.net,使用51单片机(%$$784#^67)心情家园www.bbsdiy.net,一般都是12分频出来(%$$784#^67)心情家园www.bbsdiy.net,也就可以得出一个机器周期 (%$$784#^67)心情家园www.bbsdiy.net
机器周期=12/n(n指晶振频率)(%$$784#^67)心情家园www.bbsdiy.net,假设你要定时的时间为M (%$$784#^67)心情家园www.bbsdiy.net
那么定时的初值为: (%$$784#^67)心情家园www.bbsdiy.net
M/机器周期=初值; (%$$784#^67)心情家园www.bbsdiy.net
TH0=(65536-初值)%256;      (%$$784#^67)心情家园www.bbsdiy.net
TL0=(65536-初值)/256; (%$$784#^67)心情家园www.bbsdiy.net
将(65536-初值)所得的值化成16进制(%$$784#^67)心情家园www.bbsdiy.net,其高位就是TH0的值(%$$784#^67)心情家园www.bbsdiy.net,低位为TL0的值 (%$$784#^67)心情家园www.bbsdiy.net
例如用12M晶振做1ms定时计算如下: (%$$784#^67)心情家园www.bbsdiy.net
机器周期=12/12*10^6=1us(微秒) (%$$784#^67)心情家园www.bbsdiy.net
定时初值=(1*10^-3)/(1*10^-6)=1000; (%$$784#^67)心情家园www.bbsdiy.net
所以:TH0=(65536-1000)%256; (%$$784#^67)心情家园www.bbsdiy.net
   TL0=(65536-1000)/256; (%$$784#^67)心情家园www.bbsdiy.net
将65536-1000=64536化为16进制为:0xFC18 (%$$784#^67)心情家园www.bbsdiy.net
TH0=0xFC; (%$$784#^67)心情家园www.bbsdiy.net
TL0=0X18;

收藏此文章     打印  更新     编辑此文章    『关闭窗口』