单片机输出的频率计算

假如我用定时器模式2(自动重载初值)输出脉冲,我怎么计算输出的脉冲频率。频率是,1/t对吧,单片机如何计算的最好定个汇编程序理解。不会C

去网上下载一个<单片机小精灵>的软件,可以自动计算这些参数,并生成源代码



如果下载不到,你可以采纳我后留个邮箱,我发给你.

追问

这个我有的。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-25
首先一点,你要搞清楚单片机的时钟,系统主频是根据外接或者内部产生的晶振来确定的,为MCLK。然后一般分配给Timer环节的晶振频率有可能等于MCLK,也可能是MCLK/n,具体要参考对应单片机的datasheet。
其次,频率的计算。你给定时器装置的计数值假设为TCNT,那么对应的频率为:
F = MCLK/(n*TCNT)

当然了,这只是按照你的Timer计算出来的Timer完成计数所产生的频率了。如果你在中断函数中没产生一次中断对IO口进行一次取反操作的话,那么对应IO口的频率也等于上面的F。
望能够帮到你。
第2个回答  推荐于2017-10-15
比如要求频率是F,那么时间就是T=1/F,如果用定时器来做脉冲输出的控制,而且用取反IO的方式来做,那么定时时间应该是2*T,也就是说是周期的2倍。比如产生频率是1k,那么周期T=1ms,定时时间应该为2ms,所以在12M晶振的情况下,定时值为2000,按你所说用自动重装载模式,最大可以到256,我们可以设为250也就是初值设为THx=TLx=256-250=6,这样中断8次就可以取反了。程序如下:
include<reg51.h>
#define uchar unsigned char
uchar num;
sbit p10=P1^0;
void t0isr() interrupt 1
{
num++;
if(num>=8)
{
num=0;
p10=~p10;
}
}
main()
{
TMOD=0x02;
TH0=6;
TL0=6;
TR0=1;
ET0=1;
EA=1;
while(1);
}追问

可以用汇编写吗。但也是这样的,假如这个频率要在,1K-200K可调那么我,在数码管上存的时候肯定,存的是,0-9,K。10K。100K去存,我按键调的时候也是调,分三位去调节的。假如,输出,20K,那么,1/200000=0。0000005然后把得到的这个数去/2得到多久转换一个高低电平,单片机怎么算这个数。

追答

ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#02H
MOV TH0,#6
MOV TL0,#6
SETB TR0
SETB ET0
SETB EA
CLR A
SJMP $
T0ISR:
INC A
CJNE A,#8,T0E
CLR A
CPL P1.0
T0E:
RETI
END
;计算很简单,对频率求倒数,再乘以2就是定时器总初值,再根据量程大小决定中断次数和初值大小。

追问

难点就是计算这个了,就是不知道二进制怎么去计算这个。

追答

你不用担心二进制的计算问,恒定值需要你自己计算,也就是用十进制计算。至于输入是参数,那么就需要单片机计算了,如果你编制不了计算程序,可以下载一个51汇编语言常用子程序集,里面有很多可供你参考的程序,也可以用查表法来做,将你需要的东西,做成一个表放到里面,这样就简单多了。

追问

你的意思是,把,1K-200K的初值和次数都先算好然后,查表送到定时器TH TL里面是吧,这样的话那就简单了。多谢。

本回答被提问者采纳

单片机输出的频率计算
比如要求频率是F,那么时间就是T=1\/F,如果用定时器来做脉冲输出的控制,而且用取反IO的方式来做,那么定时时间应该是2*T,也就是说是周期的2倍。比如产生频率是1k,那么周期T=1ms,定时时间应该为2ms,所以在12M晶振的情况下,定时值为2000,按你所说用自动重装载模式,最大可以到256,我们可以设...

单片机的输出声音频率为什么这么算
1秒÷1.4毫秒=714,也就是说每秒钟产生714个周期,也就是714Hz。或者,你上过中学的话,就会知道频率=时间÷周期数。

单片机怎么算频率
使用单片机计算频率的方法:定时器捕捉输入:捕获外部信号的边缘触发,测量时间戳间隔计算频率。定时器计数模式:以已知频率运行定时器,计数外部信号脉冲,计算频率。外部计数器:通过定期读取外部计数器或 i\/o 引脚状态计算频率。如何使用单片机计算频率 入门 计算频率是使用微控制器的常见任务,它涉及确定某...

单片机频率计算公式是什么?
那么1\/1ms =1\/0.001S =1000HZ

单片机的输出声音频率是多少?
负电平相同时长能生成最大声音 500Hz=500次震荡每秒,即震荡频率=1\/500Hz=0.002秒=0.002s 如果我们需要生成500Hz的声音,应该让扬声器接收到这样的波形:0.001s的高电平和0.001s的低电平 因此我们设定定时器每0.001s中断一次,在中断时翻转P3.0的状态,得到的波形就是我们想要的波形啦。

51单片机pwm输出频率算法,谁有公式,怎么算的?
单片机是独立 pwm硬件产生,还是靠定时器中断产生 普通51单片机没有硬件pwm功能,只能靠 定时器中断来产生,而多数增强型 51单 片机是有硬件pwm功能,一般PWM频率是晶振频率\/分频系数\/256 如晶振频率12M,分频系数设为2,则PWM频率为12000000\/2\/256=23.4 KHZ ...

51单片机输出pwm波达不到想要的频率(设定为1K)
标准 51 单片机,按 12MHz 晶振,以12T工作模式算,一个机械周期 就为 1us。一条赋值语句 2us,一条自增运算 1us,一条判断4us。定时器内容 算上 2条定时器初值赋值、1条自加、1条判断、2条赋值(清零 跟 标志),共计13us,题目要求频率 的周期约为 计算值 的 100 倍,就算LZ 想输出 ...

单片机频率计算公式是什么?
这得看是什么单片机了:对于精简指令集性能的单片机的工作频率(1\/机器周期)=时钟频率(1\/时钟周期).普通的51单片机来说:频率是1MHZ,时钟周期是1\/12us(1除以12M),机器周期是12倍的时钟周期--1us.周期是频率的倒数 或者频率是周期的倒数 1秒:相当于频率是1HZ ,也就是1\/1S =1HZ 那么1\/1ms ...

单片机中从P1.1引脚输出1000hz方波 晶振频率为12MHZ 定时时间为多少 怎 ...
1000Hz 的周期T=1ms,定时为 半周期 0.5ms=500us,12MHz晶振,机械周期为 1us,定时器初值=65536-(500us\/1us)=65036=0xFE0C;若是想问定时时间,就为500us,若是想问定时器初值,就为 0xFE0C;MOV R0,#03 MOV TMOD,#01H SETB TR0 LOOP: MOV TH0,#FC MOV TL0,#18 LOOP1:JNB ...

单片机 频率计,
待测频率f=1\/T,T=(TH0*256+TL0)*(1\/F),其中F为CPU的主频。那么有 f=1\/T=F\/(TH0*256+TL0).该式子和500000\/(TH0*256+TL0)比较发现,它的500000和你的10000000就是CPU主频F。通过直接计算可得:它的晶振频率是500000*12=6M,你的晶振是10000000*12=120M。由此可见,问题出在你的...

相似回答