STC89C52 可以测多大的频率,晶振为12M。怎么计算的?

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-08-27
STC89C52单片机计算自然时间【数秒】,晶振12mhz,

计算自然时间干嘛用两个中断?用一个外部中断就行了,加一个计时器。
思路就是给计时器付初值(控制时间长短),没计一秒就进入中断,中断中就把显示的时间加一,然后又计一秒,又中断显示加一,循环就行了。
写个大概结构吧:

void main()
{
TMOD=0x00;//设置定时器0为工作方式1
TL0=(65536-5000)/256;//计时器低四位附初值
TH0=(65536-5000)%256;//计时器高四位赋值,12MHz晶振,那么这样计时
溢出时刚好为50ms。重复20次就为1s。
EA=1;//开总中断
ET0=1;//开定时器0中断
TRO=1;//启动定时器
display();//控制显示程序
}
接下来每计满一次就会进入中断,在中断中就可以这样写:
{
num++
if(num==20)
{
num=0;//清零,为下一秒记时准备
miao++
}
}
那么每计20次刚好一秒,miao就加1。在dispaly中显示就可以了。记得把计时器付初值放在循环里就行了。
大概思路就这样,希望能帮到。

12Mhz 系统周期 =1/12uS
二分频之后就是 时钟周期 = 1/6uS 是完成一种微机操作的周期
六分频之后就是 机器周期=1uS 是完成一种基本操作的周期 也是指令周期;

用单片机测外部的频率?
89C52的单片机是12个机器周期为1个指令周期。晶振为12M,也就是1个指令周期的时间为1uS,故理论上最多能测0.5M的外部频率(要分别读到高电平周期与低电平周期),但由于实际上不会刚好1个指令读取1个数据,因为读了数据还要储存,要好几条指令才能读取1个数据。所以个人以为100KHz就是极限了。
如果要测的频率高一些,可以采用1指令周期=1机器周期的单片机。STC新出的也有这种单片机。

单片机书上都会有那个计算公式额,具体的我记不清了,翻翻书就有的,频率是由波特率算出来的