单片机 当选用12MHz时为什么最高技术频率为0.5MHz

作者&投稿:郯固 (若有异议请与网页底部的电邮联系)
若晶振主频为12MHz, 如何用定时器T0来测试频率为0.5MHz左右的方波周期?用8051单片机汇编语言编初始化程序~

8051单片机12M晶振,系统主频为1Mhz。与方波周期0.5MHz同数量级,不能采用简单脉冲宽度测量的方法。最好采用两个定时器,一个对下降沿或上升沿计数,溢出中断;另一个计时。
计数溢出TOP可设置为N,设N个脉冲的时间为T。则F=N/T。

早期“指令周期”都是用来描述 某条指令的执行时间的,随着C语言被大量使用,指令时间逐渐被人淡忘,现在说“指令周期”都是用来 替代“机器周期”这一名称了。
而标准51系列单片机,机器周期为 12T模式,即机器周期=12/Fosc=12/12MHz=1us;
但随着单片机厂家的增多,技术在不断竞争,51单片机已经出现 6T模式、1T模式的产品,其机器周期分别为 6/Fosc=0.5us、 1/Fosc=1/12 us;
另外,不同单片机类型的机器周期不一样,如PIC系列单片机,其机器周期为 4T模式,即4/Fosc=1/3 us。

我是学C的汇编我也不太会,按照我的理解先回答你的问题吧,
51单片12个时钟周期等于1个机器周期,晶振是12M的话单周期指令执行一条的时间就是
12*(1/12M)1微秒。(6M的话就慢一倍执行一条指令2us)
所以最快一个周期也要2us (高低电平各1us)
频率F=1/T=1S/2us=1,000,000/2=500K
所以12M时0.5MHZ。

为什么?因为单片机端口检测一个波形的边沿变化需要2个机器周期:如果两个周期检测到的电平不同,就表示端口有一个脉冲事件,所以对于51单片机,单片机端口输入的最高频率不超过工作频率的1/24,所以在12MHz时最高的输入频率只有500HKz。

0.4MHz脉冲频率,想用T0来测试很难,毕竟12M的晶振才1M指令周期,0.5能走什么指令,又如何去测量,但是最与20~1s这么长的时间就太容易了,定时一个短周期的定时器,用定时器来累加计时,主程序就一直在判断高低电平,每个电平变化就记录下该电平所用时间再初始化一下定时时间来计算下一个电平的时间,然后就算出周期来了

我劝你学C吧!汇编的不是很实用!我自己感觉汇编的程序不是很好读!也许每个人的思维不一样!你的问题可以看看自己的课本应该有讲解!

以前有个题目,关于...
http://zhidao.baidu.com/question/205779861.html


正蓝旗19312587613: AT89S52单片机最大晶振是多少?为何一般情况下选择用晶振12MHz? -
屠震二乙: 最大24Mhz,数据来源,datasheet.再大的话可能就出错了,不知道你试过没有,晶振两脚短接都可以工作,而且速度非常快,逻辑可能就有问题了.一般选用12M是因为大多数指令执行需要12个周期,也就是说大约1秒执行1M条指令,当然也有几个周期一条指令的,为延迟等 好计算而已.

正蓝旗19312587613: 单片机上的晶振为什么有时是12MHZ,有时是11.0592MHZ?有什么区别么? -
屠震二乙: 标准的51单片机晶振是1.2M-12M,一般由于一个机器周期是12个时钟周期,所以先12M时,一个机器周期是1US,好计算,而且速度相对是最高的(当然现在也有更高频率的单片机). 11.0592M是因为在进行通信时,12M频率进行串行通信不容易实现标准的波特率,比如9600,4800,而11.0592M计算时正好可以得到,因此在有通信接口的单片机中,一般选11.0592M

正蓝旗19312587613: 单片机使用晶振为12MHz时执行一条指令所需要的最长时间是多少?详细点 -
屠震二乙: 12MHz的话,机器周期就是 0.5us了乘 除法需要的机器周期最长 4个机器周期,需要的时间也就是2us了

正蓝旗19312587613: 单片机为什么要分频??比如说12MHz的晶振为什么要再进行12分频? -
屠震二乙: 如果你是指传统51单片机的指令周期,那是由于初期设计的原因,那时候硬件技术还没现在这么发达,执行指令时需要子时钟,就把12个振荡周期规定为1个机器周期,第几个振荡周期取指,第几个振荡周期译码等等都排好了,都是有用的.现在技术进步了,好多单片机改进了,有6T甚至1T机器周期,速度当然快多了.希望对你有帮助.

正蓝旗19312587613: 单片机的外部晶振为什么要用12MHz -
屠震二乙: 可以不用12M,你可以用8m,4m都没事.只要不要超过单片机的极限.大多数教科书都以12M为例.计算也方便,atmel的at89c51最高也是12M

正蓝旗19312587613: 单片机使用80C52RC利用定时器0来做时钟.(晶振12MHz).使用程序为最普遍的程序.这个时钟误差是多少? -
屠震二乙: 朋友,这个时钟的24小时的误差是:比标准时间慢72s(使用12864) 第一位朋友说的有道理.同时,你看看有篇文章就是分析这种误差的.每条语句都会产生延迟,利用增加或者减少定时器计数来消除误差.不过这种时钟根本不实用.使用DS1302或者DS12C887系列的芯片.

正蓝旗19312587613: 疑问:晶振的振荡频率越大,单片机的处理速度就越快,那为什么有的选12MHz,有的选24MHz的呢? -
屠震二乙: 1,根据cpu最高工作频率决定 2,根据系统需要决定; 3,因为工作频率越高功耗越大,如果可以,频率低一点好.

正蓝旗19312587613: 51单片机采用12MHZ的晶振时一般用30PF的电容,这个30是怎么来的? ... -
屠震二乙: 不是谐振电容,是耦合电容.根据通过的频率,大致的.

正蓝旗19312587613: 当80C51单片机晶振频率为12MHz时,时钟周期.机器周期各是多少? -
屠震二乙:[答案] 1.时钟周期即晶振的单位时间发出的脉冲数,12MHZ=12*10的6次方,即每秒发出12000000个脉冲信号,那么发出一个脉冲的时间就是时钟周期,即1/12微秒. 2.一个机器周期等于12个时钟周期,所以是1微秒.

正蓝旗19312587613: 为啥单片机的晶振都选用11.0592M ? -
屠震二乙: 一般单片机与其他设备通信时,基本上选用的晶振都是11.0592M,因为它理论上产生的波特率误差为0,只是晶振频率受外界影响会有点误差.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网