历史上的今天
返回首页

历史上的今天

今天是:2025年01月16日(星期四)

正在发生

2021年01月16日 | 8051单片机教程第五课:延时程序分析

2021-01-16 来源:eefocus

上一次课中,我们已经知道,程序中的符号R7、R6是代表了一个个的RAM单元,是用来放一些数据的,下面我们再来看一下其它符号的含义。


DELAY:MOVR7,#250;(6)


D1:MOVR6,#250;(7)


D2:DJNZR6,D2;(8)


DJNZR7,D1;(9)


RET;(10)

MOV:这是一条指令,意思是传递数据。说到传递,我们都很清楚,传东西要从一个人的手上传到另一个人的手上,也就是说要有一个接受者,一个传递者和一样东西。从指令MOVR7,#250中来分析,R7是一个接受者,250是被传递的数,传递者在这条指令中被省略了(注意:并不是每一条传递指令都会省的,事实上大部份数据传递指令都会有传递者)。它的意义也很明显:将数据250送到R7中去,因此执行完这条指令后,R7单元中的值就应当是250。在250前面有个#号,这又是什么意思呢?这个#就是用来说明250就是一个被传递的东西本身,而不是传递者。那么MOVR6,#250是什么意思,应当不用分析了吧。


DJNZ:这是另一条指令,我们来看一下这条指令后面跟着的两个东西,一个是R6,一个是D2,R6我们当然已知是什么了,查一下D2是什么。D2在本行的前面,我们已学过,这称之为标号。标号的用途是什么呢?就是给本行起一个名字。DJNZ指令的执行过程是这样的,它将其后面的第一个参数中的值减1,然后看一下,这个值是否等于0,如果等于0,就往下执行,如果不等于0,就转移,转到什么地方去呢?可能大家已猜到了,转到第二个参数所指定的地方去(请大家用自已的话讲一下这条语句是怎样执行的)。本条指令的最终执行结果就是,在原地转圈250次。


执行完了DJNZR6,D2之后(也就是R6的值等于0之后),就会去执行下面一行,也就是DJNZR7,D1,请大家自行分析一下这句话执行的结果。(转去执行MOVR6,#250,同时R7中的值减1),最终DJNZR6,D2这句话将被执行250*250=62500次,执行这么多次同一条指令干吗?就是为了延时。


一个问题:如果在R6中放入0,会有什么样的结果。


二、时序分析:


前面我们介绍了延时程序,但这还不完善,因为,我们只知道DJNZR6,D2这句话会被执行62500次,但是执行这么多次需要多长时间呢?是否满足我们的要求呢?我们还不知道,所以下面要来解决这个问题。


先提一个问题:我们学校里什么是最重要的。(铃声)校长可以出差,老师可以休息,但学校一日无铃声必定大乱。整个学校就是在铃声的统一指挥下,步调一致,统一协调地工作着。这个铃是按一定的时间安排来响的,我们可以称之为“时序,时间的顺序”。一个由人组成的单位尚且要有一定的时序,计算机当然更要有严格的时序。事实上,计算机更象一个大钟,什么时候分针动,什么时候秒针动,什么时候时针动,都有严格的规定,一点也不能乱。计算机要完成的事更复杂,所以它的时序也更复杂。


我们已知,计算机工作时,是一条一条地从ROM中取指令,然后一步一步地执行,我们规定:计算机访问一次存储器的时间,称之为一个机器周期。这是一个时间基准,好象我们人用“秒”作为我们的时间基准一样,为什么不干脆用“秒”,多好,很习惯,学下去我们就会知道用“秒”反而不习惯。


一个机器周期包括12个时钟周期。下面让我们算一下一个机器周期是多长时间吧。设一个单片机工作于12M晶振,它的时钟周期是1/12(微秒)。它的一个机器周期是12*(1/12)也就是1微秒。(请计算一个工作于6M晶振的单片机,它的机器周期是多少)。


MCS-51单片机的所有指令中,有一些完成得比较快,只要一个机器周期就行了,有一些完成得比较慢,得要2个机器周期,还有两条指令要4个机器周期才行。这也不难再解,不是吗?我让你扫地的执行要完成总得比要你完成擦黑板的指令时间要长。为了恒量指令执行时间的长短,又引入一个新的概念:指令周期。所谓指令周期就是指执行一条指令的时间。INTEL对每一条指令都给出了它的指令周期数,这些数据,大部份不需要我们去记忆,但是有一些指令是需要记住的,如DJNZ指令是双周期指令。


下面让我们来计算刚才的延时。首先必须要知道晶振的频率,我们设所用晶振为12M,则一个机器周期就是1微秒。而DJNZ指令是双周期指令,所以执行一次要2个微秒。一共执行62500次,正好125000微秒,也就是125毫秒。


练习:设计一个延时100毫秒的延时程序。


要点分析:1、一个单元中的数是否可以超过255。2、如何分配两个数。


三、复位电路


任何单片机在工作之前都要有个复位的过程,复位是什么意思呢?它就象是我们上课之前打的预备铃。预备铃一响,大家就自动地从操场、其它地方进入教室了,在这一段时间里,是没有老师干预的,对单片机来说,是程序还没有开始执行,是在做准备工作。显然,准备工作不需要太长的时间,复位只需要5ms的时间就可以了。如何进行复位呢?只要在单片机的RST引脚上加上高电平,就可以了,按上面所说,时间不少于5ms。为了达到这个要求,可以用很多种方法,这里提供一种供参考,见图1。实际上,我们在上一次实验的图中已见到过了。


这种复位电路的工作原理是:通电时,电容两端相当于是短路,于是RST引脚上为高电平,然后电源通过电阻对电容充电,RST端电压慢慢下降,降到一定程序,即为低电平,单片机开始正常工作。


推荐阅读

史海拾趣

Hexawave公司的发展小趣事

当涉及到采用算术逻辑单元(ALU, Arithmetic Logic Unit)组成的二进制加减电路时,网友们可能会提出多种问题,这里列举一些常见问题及其解答:

1. ALU 如何实现二进制加法?

回答
在二进制加法中,ALU 使用全加器(Full Adder)或一系列的全加器(对于多位二进制数)来实现。每个全加器接受三个输入:两个加数位(A 和 B)以及一个来自低位的进位(Cin)。它产生两个输出:一个和位(Sum)和一个向高位的进位(Cout)。通过级联多个全加器,可以完成多位二进制数的加法。

2. ALU 如何实现二进制减法?

回答
二进制减法可以通过加法来实现,利用“补码”的概念。具体地,将减数取反加一(即求其二进制补码),然后将该补码与被减数相加。结果的正负由最高位(符号位)决定,其余位表示数值大小。ALU 内部可以包含专门的电路来处理这种补码加法,从而间接实现减法。

3. ALU 如何处理进位和借位?

回答
在加法中,进位(Carry)是从低位向高位传递的,每个全加器都会输出一个进位信号给下一个高位的全加器。在减法(通过补码加法实现)中,由于使用了加法器,进位的概念仍然适用,但在某些情况下,它可能被视为“借位”的相反操作,尤其是在直观理解减法过程时。不过,从电路设计的角度来看,ALU 内部处理的是加法操作,包括进位。

4. ALU 如何支持更复杂的算术运算,如乘法和除法?

回答
ALU 通常支持基本的算术运算(加、减)和逻辑运算。对于乘法和除法,ALU 可能不支持直接计算,或者仅支持部分乘法和除法的简化版本(如移位操作,可以视为乘以2的幂或除以2的幂的简化形式)。复杂的乘法和除法运算通常需要额外的硬件单元(如乘法器和除法器)来执行,这些单元可能作为ALU的补充或与之并行工作。

5. ALU 的设计如何影响计算机的性能?

回答
ALU 的设计对计算机的性能有直接影响。更快的ALU 能够更快地完成算术和逻辑运算,从而提高整个计算机的处理速度。此外,ALU 的指令集和设计的灵活性也会影响其能够执行的操作种类和效率。现代CPU中的ALU通常非常高效且灵活,能够执行多种复杂的算术和逻辑操作,以满足现代应用程序的需求。

Amphenol(安费诺)公司的发展小趣事

Amphenol Corporation,通常简称为Amphenol,是一家全球领先的连接技术公司,提供广泛的连接器解决方案,涵盖了航空航天、汽车、通信、工业、医疗和军事等多个领域。以下是关于Amphenol公司发展的五个相关故事:

  1. 创立与起步阶段:Amphenol公司成立于1932年,总部位于美国康涅狄格州沃拉姆。最初,公司致力于生产无线电连接器,并通过不断的创新和技术改进,逐步发展成为连接器行业的领导者之一。在第二次世界大战期间,Amphenol公司为美国军队提供了大量的军用连接器,为公司的发展奠定了坚实的基础。

  2. 技术创新与产品多样化:随着电子技术的不断进步和市场需求的不断变化,Amphenol公司不断进行技术创新,拓展产品线的多样性。除了传统的连接器产品,公司还开发了许多新型连接器,如光纤连接器、高速数据连接器、环境密封连接器等,以满足不同行业的需求。

  3. 全球化发展与市场拓展:Amphenol公司在全球范围内建立了广泛的销售网络和生产基地,实现了全球化布局和市场覆盖。公司在美国、欧洲、亚洲和其他地区设有多个生产工厂和研发中心,为客户提供当地化的服务和支持。通过不断扩大市场份额和提升产品质量,Amphenol公司成为了全球连接器市场的主要参与者之一。

  4. 客户合作与定制化解决方案:Amphenol公司与客户建立了紧密的合作关系,根据客户的需求和应用场景,提供定制化的连接器解决方案。公司的工程团队与客户共同设计和开发符合特定要求的产品,为客户提供专业化和个性化的服务。这种定制化解决方案能够满足客户多样化的需求,增强了公司在市场上的竞争优势。

  5. 质量管理与持续改进:Amphenol公司高度重视产品质量管理,严格遵循国际质量管理体系标准。公司的生产工艺和质量管理体系通过了ISO 9001质量管理体系认证,并持续进行质量改进和技术创新。此外,Amphenol公司的产品还通过了各种行业认证和标准,如航空航天领域的AS9100认证等,确保产品的可靠性和稳定性。

这些故事展示了Amphenol公司从创立初期到如今在技术创新、产品多样化、全球化发展、客户合作与定制化解决方案以及质量管理与持续改进等方面取得的重要进展。

Exar公司的发展小趣事

Exar公司通过收购和兼并多家公司,实现了技术融合和产品线拓展。其中,Neterion和Hifn的收购是Exar发展历程中的重要里程碑。Neterion在万兆以太网数据传输技术和虚拟化IO技术方面处于领先地位,而Hifn则在数据精简、加密、压缩技术方面拥有领先技术。Exar将这两家公司的技术融合在一起,推出了一系列高性能的数据传输和存储产品,进一步巩固了其在行业中的领先地位。

Ethertronics公司的发展小趣事

面对日益激烈的市场竞争和不断变化的市场需求,Exar公司始终坚持以创新为核心竞争力。公司不断投入研发资金,加强技术创新和产品研发力度,推出了一系列具有自主知识产权的新产品。同时,Exar还积极关注行业发展趋势和市场动态,不断调整和优化产品线,以适应市场的变化和发展。在未来,Exar将继续坚持创新驱动的发展战略,努力成为电子行业的领军企业。

请注意,以上故事框架仅供参考,具体的故事内容需要根据实际情况进行补充和完善。

集创北方(CHIPONE)公司的发展小趣事

近年来,集创北方在电子行业的地位日益稳固。从2019年到2021年,公司的营收实现了飞跃式增长,从14.47亿元增长至56.74亿元,复合增长率高达98%。这一成绩的背后,是公司不断创新、积极应对市场变化的结果。

ebm-papst公司的发展小趣事

随着产品种类的不断增加和生产规模的扩大,ebm-papst面临着越来越大的内部物流挑战。为了优化内部物流流程、提高生产效率,公司引入了先进的物流管理系统和自动化设备。这些措施使得公司能够更高效地管理库存、运输和配送等环节,减少了生产成本和时间成本。同时,优化内部物流也提高了产品的质量和可靠性,增强了客户对ebm-papst的信任度。

问答坊 | AI 解惑

单总线单片机多机通讯系统设计

传统的多机通讯系统一般需要四条线完成: 1.电源线;2.地线;3.发送信号线;4.接收信号线。然而,对于主机和分机距离较远、分机台数较多的系统,采用四线制的经费投入较大,安装起来也颇困难。基于这一问题,本文结合为某医院研制的既有模拟信号( ...…

查看全部问答>

想用单片机做一个遥控窗帘,没什么思路,各位高手,指点指点

想用单片机做一个遥控窗帘,没什么思路,各位高手,指点指点 谢谢…

查看全部问答>

从事嵌入式工作是否需要考研

本人是电子信息工程专业的,大三,在网上了解些嵌入式方面的情况 打算从事这方面的工作 具体从事哪个层面还没有想好,大家是偏软的好,还是偏硬的好呢? 感觉大学时候学的知识不够深入,不知道做这是否需要考研?应该考什么专业呢?什么学校这方 ...…

查看全部问答>

framebuffer的问题,好郁闷

s3c2410 ,2.6.28的内核; 我的应用程序,将一副jpeg照片转成rgb565后,写入framebuffer,在屏幕上显示我的照片了;然后我的进程退出。 此时,图片还在显示.过10分钟后,屏幕上的图片没了,一片空白; 以后我再此启动程序,屏幕没一点反应; 另外 ...…

查看全部问答>

vs2005 怎么调试 ce5.0 的驱动

我想在VS2005 里调试ce5.0 的驱动,怎么弄呢, 平台X86的 驱动用vs2005写完了,一个ISR的,一个IST的,编译通过,生成的dll加到镜像里了,注册表也写了, Drivers\\Active里也有我的设备名字了, 我怎么用vs2005来调试呢, 还是一定要用pb编译 ...…

查看全部问答>

关于x264在arm9平台上的移植

交叉编译器: arm-linux-gcc 4.0.0 x264版本 :x264-snapshot-20090408-2245 开发板: 三星2440 编码参数:./x264 -q 26 -o \"hall.264\" \"hall_qcif.yuv\" 176x144 很奇怪,今天试着把x264交叉编译了一下,然后在板子上执行编码,过了很久编 ...…

查看全部问答>

测量摆的倾斜角度

  希望大家多给建议:        我想测量一个垂直的摆的倾斜角度,倾斜到一定角度就报警。该怎么设计呢?…

查看全部问答>

请教USB HOST开发中批量传输问题

最近用LPC2378+ISP1161做一个USB host项目,除下了几个问题,拿出来和大家讨论一下: 批量传输问题。一次读或写操作有三个阶段:命令、数据、状态。调用三次批量传输实现三个阶段。在我的程序中,我的一次读写操作是都是读或者写512字节,也就是 ...…

查看全部问答>

DIY应急灯学习笔记——MAX745充电芯片使用小结

这次应急灯设计的充电部分,我使用的是美信公司的MAX745充电芯片,该芯片采用双环控制,PWM工作频率为300kHz。采用该控制芯片的充电器,外围元件少,充电电压精度高,可对1-4只锂离子电池组充电,并具有锂离子电池组充电所需的全部功能。 MAX745 ...…

查看全部问答>

请教各位大侠:关于DMA中断标志的含义

stm32中ADC转换的数据可以由DMA读取到缓存中去 如果我规则采集6路信号,设置12位缓存 我需要知道每次6路采集完的标志去处理中断 那么请问各位大侠 DMA_IT_TC1  ( 通道1传输完成中断标志)是指的每次6路转换完传输完的中断,还 ...…

查看全部问答>