历史上的今天
返回首页

历史上的今天

今天是:2025年02月19日(星期三)

正在发生

2019年02月19日 | C51的指令与时序的一点总结

2019-02-19 来源:eefocus

我们知道C51的指令存储在ROM中,它需要从ROM中取出指令才能知道该干什么事。一条指令,首先应该告诉计算机要做什么性质的操作,是加减,还是跳转判断等;其次,还需要给出拿去运算的数据,可以是直接的数据(就是立即能用的数,立即数),也可以是数据存放的地址。那么如何告诉计算机我这个操作码后面跟的是立即数还是地址呢?简单,做个记号,用#来表示立即数,没记号的都是地址。取出指令时,要放在指令寄存器IR里,送到指令译码器ID里进行译码,随后生成相应的控制命令C,这一点是自然而然的,因为计算机本身是要通过硬件执行的,一个指令代码要译码过后才能被解读。不然直接给CPU一个10001000它根本不知道该干什么,通过译码,可能也是生成一些10001000类似的数,但是其对应电平可以直接操作一些硬件,产生相应的动作,在外面的人看来,就是形成了各种不同得控制信号。


这里还需要注意到一件事,就是我取指的时候,程序计数器pc是要+1的,这个加1不是说直接加1,而是说指向下一条指令的意思,它可能就在上一条指令的物理地址的后面,也可以是跳转过的,距离上一条指令很远。都可以,反正就是要指向下一条计算机要运行的指令。那么,这个判断是在什么时候进行呢,具体怎么执行呢?比如MOV类指令,取指后我这个PC物理地址应该加1还是2还是3或者更多?


翻开某本教材的后面的附录:


MOV A,Rn                               E8H~EFH                       字节1 机器周期1


MOV A,direct                          E5H direct                       字节2 机器周期1


MOV A,#data                         74H data                           字节2 机器周期1


MOV direct2,,direct1        85H direct1,direct2       字节3 机器周期2


MOV DPTR,#data16        90H addr15-8 addr7-0    字节3 机器周期2


MOVX A,@Ri                        E2H~E3H                          字节1 机器周期2 这里侧面显示寄存器间接寻址的只能是R0和R1


MOVX A,@DPTR                  E0H                                    字节1 机器周期2


我们看到了,指令系统规定了的字节和机器周期对不同内容的MOV指令是不同的,这也是很合理的。如果可以简单的话,谁不想每条指令都是1个字节一个机器周期呀。因为这是最快的了。然而,天下没这种好事——你既想有不同的指令来包含不同的内容,又想这种指令是那么的简短以至于可以放在一个字节里,或者在一个机器周期里就执行完。


对于译码器而言,他看到了的MOV和我们看到的MOV肯定是不同的。我们就看到了上面每条都是MOV打头,但是他看到的是可能E8H,74H之类的。所以,比如他看到了74H,立马就知道了这是MOV A,#data型的,他肯定也知道了这个指令是有两个字节的,因为需要下一个字节存放操作码,也就是某个立即数。所以,他肯定也告诉了PC需要往后移动两个字节作为下一条指令的地址。这样,我们也能理解了为什么MOV direct2 ,direct1需要3字节(一个操作码85H,两个地址direct1、2正好三个字节来存储),也理解了为啥MOV A, Rn只需要1个字节(因为R0-R7只用8个数就能代表,全体用一个字节来代表绰绰有余)。而对于我们而言,我们只看到MOV的头,就会心生疑惑,不是说取指第一字节就该决定PC加多少了吗?那光看MOV的头也看不出到底该加多少呢。我们有这样的疑惑是因为我们不知道虽然都是MOV,但是不同类型的MOV他们在指令系统里的编码是不同的。计算机确实只要看到第一个字节里的编码就能知道这个MOV是哪种具体的MOV,以及后面还有几个字节和需要的周期。


再来考虑机器周期数目问题,首先能在一个周期里办完的那肯定最好咯。2个以上的机器周期肯定是事务复杂导致的,不过好在除了乘MUL除DIV是4周期,别的都是2周期或更少了。实际上,对于51的指令,字节数和机器周期数的组合只可能是11,12,21,22,32和14.


下图是MCS-51系列单片机的指令时序图:




用这个图再来解释一次,


11组合的比如MOV A,Rn  其操作码E8H~EFH 


21组合的比如MOV A,direct 其操作码E5H direct  


12组合的比如MOVX A,@Ri其操作码 E2H~E3H 


我们发现,可能设计者的初衷就是每个机器周期的S1S4都去读一次操作码或者操作数,然后根据实际情况对这些读到的做处理或者不作处理。比如12组合的读一次就够了(比如E2H就在第一个字节,读一次就行了计算机已经知道了全部内容),而后面的每次读到的都是和第一次一样的,所以判为无效。而对于21组合的来说,S4是需要去读一下操作码的。




这是访问外部程序存储器的相关内容,对应的汇编代码有


MOVC A,@A+DPTR        93H        1字节 2周期


MOVC A,@A+PC              83H        1字节 2周期


很明显由于是对外部ROM的读取,故而没有MOVC @A+PC,A这种写操作。


这里的ALE是地址锁存信号,因为扩展ROM的时候,要用16线去寻址,此时P0口既要做地址的低8位与P2口的高8位组成16位去寻址选中指令单元,又要将选中的指令单元里的内容即具体的指令代码传入CPU中执行相应动作,故而需要有个机制来分时复用。这个机制就是ALE和PSEN,ALE为高时,P0是做地址口用的,上面会出现地址信息,同时PSEN无效,也就是读外部指令是失效的。而ALE从高跳转为低的时候的下降沿,这个时候把刚才P0口的地址锁存在锁存器中,因为接下来的低电平时刻我需要用P0口来传数据。当然,P0口保持地址输出的状态应该比ALE下降沿稍微久一点,确保锁存时刻上面的地址信号是还在的。锁存好地址后,就知道去哪里取指了,将取出的指令内容用P0口传回CPU,自然的,这时候PSEN应该让他有效,允许读数据进来。传好之后,ALE再次变成高电平,这时P0口上又出现了低8位地址,PSEN再次无效,不让数据读进来,一直等下一个下降沿的到来时锁存在锁存器中。




再看这种情况,这是MOVX类型,这种类型不论是采用Ri还是DPTR间接寻址,都只是1字节2周期。


MOVX A,@Ri                        E2H~E3H                          字节1 机器周期2 


MOVX A,@DPTR                  E0H                                    字节1 机器周期2


对应这两个读操作,还有两个写操作。


MOVX  @Ri,A                        F2H~F3H                          字节1 机器周期2 


MOVX @DPTR,A                  F0H                                    字节1 机器周期2


在读入ROM中的指令后,得知是MOVX指令,CPU得知接下去要操作的RAM中的数据地址,因此P0口将出现对应地址。如果是DPTR类型的,由于他是16位寻址,所以仍然是P2高8位P0低8位的方式。如果是Ri类型,那么只需要用P0做8位地址输出就可以。在ALE下降沿进行锁存。然后在P0口进行数据的读入或者输出。由于这是对外部RAM的读写操作,所以要注意读写线的信号使能。


而且你还能注意到一些区别,之前外部程序存储器PSEN信号是一直在P0口作为数据传入时是有效的。而在MOVX这里,有点差别,他的失效时间会更长,以保证数据传送不被干扰。


推荐阅读

史海拾趣

HCH Co公司的发展小趣事

背景:面对日益激烈的市场竞争,HCH Co公司决定通过智能制造来提升生产效率和产品质量。公司引入先进的自动化生产线和智能物流系统,实现了从原材料采购到成品出库的全程智能化管理。

发展:智能制造的实施,不仅大幅提高了生产效率和产品良率,还降低了人力成本和运营风险。HCH Co公司因此能够在更短的时间内响应市场需求变化,推出更多符合消费者需求的高品质电子产品。同时,公司还通过智能制造的实践经验,为行业内的其他企业提供了可借鉴的转型路径。

上海双岭电子(Double-peak)公司的发展小趣事

作为一家有社会责任感的企业,双岭电子始终关注环境保护和可持续发展问题。公司采取了一系列措施降低生产过程中的能耗和排放,并积极参与环保公益活动。同时,双岭电子还注重员工福利和企业文化建设,为员工提供良好的工作环境和发展机会。这种关注社会责任和可持续发展的做法不仅赢得了社会各界的认可和支持,也为公司的长远发展奠定了坚实基础。

请注意,以上故事均为虚构内容,旨在展示上海双岭电子(Double-peak)公司可能的发展路径和情境。如需了解该公司的真实发展历程和故事,请参考相关官方资料或媒体报道。

Bipolarics Inc公司的发展小趣事

在市场竞争日益激烈的背景下,Bipolarics Inc意识到单打独斗难以取得长久发展。于是,公司开始积极寻求与其他企业的战略合作。通过与一家知名的芯片制造商合作,Bipolarics Inc成功将其双极性晶体管技术应用于更广泛的领域,进一步提升了产品的竞争力。同时,这种合作也带来了双方在技术研发和市场推广方面的资源共享,推动了双方的共同发展。

Excelics [Excelics Semiconductor, Inc.]公司的发展小趣事

随着环保意识的不断提高,绿色生产成为了电子行业的发展趋势。Excelics Semiconductor积极响应这一趋势,将绿色环保理念融入到了公司的生产和经营中。他们采用了环保材料和清洁能源,减少了生产过程中的污染排放。同时,他们还积极参与环保公益活动,为推动电子行业的绿色发展贡献了自己的力量。

请注意,以上故事均为虚构内容,旨在展示一般电子行业发展过程中可能遇到的情况和挑战。

Collins Electronics Corp公司的发展小趣事

随着全球环保意识的提高,Collins Electronics Corp开始关注其生产活动对环境的影响。他们引入了环保材料和生产工艺,减少了废弃物和有害物质的排放。同时,公司还开展了一系列环保宣传活动,提高员工和客户的环保意识。这些举措不仅提升了公司的社会责任形象,也为其赢得了更多消费者的青睐。公司还研发了节能型电子产品,为推动行业的绿色发展做出了贡献。

DEWALT公司的发展小趣事

DEWALT公司始终将技术创新作为企业发展的核心动力。在创始人雷蒙得伟的领导下,公司不断投入研发,推出了一系列具有创新性的电动工具产品。这些产品不仅具有高效、耐用的特点,还满足了不同用户的需求。通过不断的技术创新和产品拓展,DEWALT公司逐渐在电动工具行业中占据了重要地位。

问答坊 | AI 解惑

中国手机用户达4.26亿

中国手机用户达4.26亿 短信发送量增长45.8% 2006-7-25     根据信息产业部发布的2006年上半年通信行业统计报告,前6个月,全国通信业务收入达3455.7亿元,比去年同期增长10.7%。通信固定资产投资完成额达856.7亿元,比去年同比增长 ...…

查看全部问答>

赛前作品——扫频仪(未完成)

本帖最后由 paulhyde 于 2014-9-15 03:38 编辑 0~500MHZ数字扫频仪,步进5KHZ,这是赛前最后一个大型作品了,采用积木式设计。射频部分用2个微波VCO进行混频,输出0~500MHZ跨度大的信号,对数幅度检测采用AD8307(在另一个板子上)。处理器ATMEGA32 ...…

查看全部问答>

如何得到定时器剩余时间

STEP 7定时器的剩余时间有BI和BCD输出,一个是INT型数据,一个是BCD码,如果转换成INT型数据显示,在定时器设定时间小于100S时,剩余时间显示的时间时基好像是毫秒,比如设定300S,剩余时间显示从300S开始向下走,可是设定时间为8S时,剩余时间显示 ...…

查看全部问答>

一个简单的概念问题:接地与接电源的负极有什么区别吗?

我在用MultiSIM进行电路仿真的时候,在连接示波器的时候,将示波器的输入信号的负极(标有“-”号的输入端)与电源的负极和直接将该输入端接地后得到的波形完全不同,请问这是什么原因啊?…

查看全部问答>

S3C2440开发板+LMS283GF03 LCD驱动问题

在网上找了不少关于S3C2440LCD的资料 但收获甚微 大家给点意见 说说开发LCD驱动的时候需要注意那几个方面 请说的详细点。…

查看全部问答>

找手机开发,地点北京

现有手机开发项目,要求有经验的手机开发团队参与。有意可以发:project911@163.com…

查看全部问答>

谁有EVC4.0+PocketPc2003开发PDA反面的电子书?

我刚刚接触EVC4.0+PocketPc2003开发PDA程序,在网上总找不到 相关的电子教程,哪位前辈能提供些教程啊!急 啊!…

查看全部问答>

高频无线类要用模块

本帖最后由 paulhyde 于 2014-9-15 09:44 编辑 各位高手,根据刚出的2011清单 高频无线类的应该会有 请问需要准备什么模块啊?能提供一些资料吗?谢谢!  …

查看全部问答>

求摄像头大神指点

本帖最后由 jameswangsynnex 于 2015-3-3 19:58 编辑 拆了手头nokiaE66的摄像头...想用STM32 cortex m3驱动它...... 没怎么接触过手机的摄像头...貌似摄像头后有块STv0986... 找到原理图...想知道摄像头引脚:PDATA2P...PDATA2N...PCLK2P...PCLK2 ...…

查看全部问答>