单片机ALE

访问单片机外部程序,数据存储器或外设I/O接口,ALE端为什么会缺少一个脉冲,不是由晶振产生的吗?

第1个回答  推荐于2017-09-22
一般来说,51 单片机 ALE 的频率,是晶振频率的六分之一。

即,在一个机器周期中,共有两个 ALE 的脉冲。

但是,在访问单片机外部的程序、数据存储器时,ALE 会少一个脉冲。

这是一个正常的现象,Intel 公司,当年就是这么设计的。

为什么?

intel 公司没有公布原因,应该是行业机密。

当使用 ALE 当做频率源的时候,能够注意到这个问题,就行了,不用深究原因。

高校老师讲这个内容,是正确的。

有人,没有用过 ALE,或用了,却不知道缺少脉冲的事,这也算不上智力欠缺。

但是,拿自己的浅薄经历,批评高校的教学,离弱智就不远了。本回答被提问者采纳
第2个回答  2013-04-19
单片机的时钟根源上都是晶振上发展而来的,也就是说,晶振,是整个单片机的时钟树的树根,由这颗树根上,发展出其他的枝叶,例如单片机指令读取时钟,定时器时钟,外中断采样时钟,串口波特率发生时钟,ALE时钟等等。
ALE时钟,是众多单片机时钟中的一员,是单片机对机器时钟的二分频,所以是机器时钟的一半。
为什么会这样呢?因为ALE是用于外部总线的,外部总线是地址总线和数据总线复用,也就是说,有一个时钟周期用来读写地址,另一个时钟用来读写数据,所以,ALE的频率只能是单片机机器频率的一半。追问

比如执行MOVX指令就会丢失一个ALE脉冲,不是晶振确定吗?

追答

这个怎么说呢,不能叫丢失,明白吗?丢失,是指你本来应该是这样,然而,你却少了一个或者几个,是不正确的,那样才叫丢失,你这个ALE不是丢失,本来就是二分频,本来就比单片机的机器频率小。

你执行MOVX的时候,要先读写地址,此时ALE动作一次,再读写数据,此时,ALE不需要动作,所以,你就能看出来,ALE是机器时钟的一半。