历史上的今天
返回首页

历史上的今天

今天是:2025年03月10日(星期一)

正在发生

2020年03月10日 | 5课:单片机延时程序分析

2020-03-10 来源:eefocus

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

DELAY:   MOV R7,#250   ;(6)

D1:   MOV R6,#250      ;(7)

D2:   DJNZ R6,D2      ;(8)

DJNZ R7,D1            ;(9)   

RET                ;(10)

〈单片机延时程序〉

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


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


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


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


二、时序分析:

前面我们介绍了延时程序,但这还不完善,因为,我们只知道DJNZ R6,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毫秒。


如果你对上面几句还是不懂请看这里的详解:http://www.51hei.com/mcu/1247.html

关于用C语言写延时函数的详解请看这:http://www.51hei.com/mcu/710.html


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

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


三、复位电路


一、复位方式

⒈ 复位条件
        RST引脚保持2个机器周期以上的高电平。

⒉ 复位电路


⒊ 复位后CPU状态

       PC:  0000H         TMOD: 00H

       Acc: 00H           TCON: 00H

       B:   00H           TH0:  00H

       PSW: 00H           TL0:  00H

       SP:  07H           TH1:  00H

       DPTR:0000H         TL1:  00H

       P0~P3:FFH         SCON: 00H

       IP:×××00000B    SBUF: 不定

       IE:0××00000B     PCON: 0×××0000B

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


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

推荐阅读

史海拾趣

Antex公司的发展小趣事

随着业务的不断扩展,Antex在1980年决定将工厂从东京都大田区羽田迁至茨城县高萩市。这一搬迁不仅为公司提供了更广阔的发展空间,也标志着Antex开始向着全球化布局迈进。此后,公司积极寻求国际合作,与全球各地的供应商和客户建立了紧密的合作关系。

Alps Alpine Co Ltd公司的发展小趣事

面对日新月异的电子行业发展趋势,Antex公司始终保持敏锐的市场洞察力和创新精神。公司积极推进技术开发、设备强化,不断探索新的生产技术和应用领域。同时,Antex还注重人才培养和团队建设,为公司的未来发展储备了丰富的人才资源。

这些故事只是Antex公司发展历程中的一部分,它们展示了公司在电子行业中的不断努力和追求卓越的精神。未来,随着技术的不断进步和市场的不断变化,Antex将继续保持创新和发展,为电子行业的繁荣做出更大的贡献。

请注意,以上内容仅为概述,并未详细展开每个故事的每一个细节。如果需要更具体、更详细的故事,建议查阅Antex公司的官方资料或相关新闻报道,以获取更准确、更全面的信息。

鑫雁公司的发展小趣事

随着技术的不断积累和市场需求的扩大,聚洵半导体在产品研发上取得了显著突破。公司不仅继续深化在运算放大器领域的研发,还成功扩展了产品线,涵盖了模拟开关、电压基准、线性稳压器、电平转换器等多种产品。这些产品广泛应用于通讯网络、消费电子、工业控制等多个领域,满足了市场多样化的需求。同时,聚洵还获得了多项技术专利和荣誉,如集成电路布图设计专利和发明专利等,进一步巩固了其在行业中的地位。

佰鸿(BrtLed)公司的发展小趣事

近年来,佰鸿公司开始将业务触角延伸至再生医学领域。通过多年的努力,公司成功建立了再生医学医疗与健康科技生态圈,并逐步实现了产业集群化。在再生医学领域,佰鸿不仅建立了产业化场地和研发设备,还计划在未来几年内打造国际领先的再生医学产业集群。这一多元化的发展战略,使得佰鸿在电子行业之外,也找到了新的增长点。

Digi International公司的发展小趣事

Digi International与UR集团达成了战略协议,共同关注铁路、公共汽车和智慧城市等领域的发展。这一合作不仅为公司带来了新的市场机会,也促进了其在智能交通系统领域的业务拓展。通过与UR集团的紧密合作,Digi International的智能铁路解决方案在英国市场上得到了广泛应用,提高了铁路运输的效率和安全性。

CST Master Electronic Co Ltd公司的发展小趣事

在环保和可持续发展的呼声日益高涨的背景下,CST Master积极响应国家号召,将绿色发展理念融入公司的经营战略中。公司加大在环保技术研发和绿色生产方面的投入,推出了一系列节能环保的电子产品。同时,公司还加强了对废旧电子产品的回收和处理工作,实现了资源的循环利用。这些举措不仅提升了公司的社会形象,也为公司的可持续发展奠定了坚实的基础。

请注意,以上故事均基于一般电子公司的发展情况虚构而成,并不代表CST Master Electronic Co Ltd公司的真实发展历程。如需了解该公司的具体发展情况,建议查阅相关资料或咨询公司相关人员。

问答坊 | AI 解惑

最强大的串口桥式转换芯片

本帖最后由 jameswangsynnex 于 2015-3-3 19:57 编辑 我公司是JM系列IC的一级代理商,下面是JM IC的功能型号简介: JMicron智微科技主要产品研发方向为高速串行式连结(High Speed Serial Link)的相关技术,该技术现已广泛应用于Serial ATA、PCI E ...…

查看全部问答>

3.3 伏至 5 伏互联技巧

本帖最后由 paulhyde 于 2014-9-15 08:58 编辑 概述 我们对处理速度的需求日益增长,伴随着这种增长,用来构建单片机的晶体管尺寸则在持续减小。以更低的成本实现更高的集成度,也促进了对更小的几何尺寸的需求。随着尺寸的减小,晶体管击穿电压 ...…

查看全部问答>

C++.net硬件开发

请问各位大侠,C++.net能开发硬件程序吗,就是那种控制门口挡车杆升降的程序。 如果不能,那可以用VisualC++开发吗? 多种语言开发的程序可不可以组成一个软件上那? 谢谢各位。…

查看全部问答>

谁知道PROTEUS的第三方元件库怎么添加

有谁知道PROTEUS的第三方元件库怎么添加啊,我用的是7.5sp3的版本,我把.lib文件加到元件库里面但是还是以前那些元件,这是怎么回事啊?请大家帮帮忙!!!谢谢…

查看全部问答>

寻找西安写PDA软件的开发人员或公司。

要求:1、熟悉WINCE平台       2、有相关产品介绍       3、必须是西安的 联系QQ:112654 信箱:xclion@126.com 价格面谈。…

查看全部问答>

【重量级】使用RT-Thread RTOS及附属组件的LM3S8962评估板的例程

Introduction •这是使用RT-Thread RTOS及附属组件的LM3S8962评估板例程,对LM3S系列其他芯片也同样适用。所有例程源码来自开源实时操作系统RT-Thread的官方SVN源码服务器。这儿将例程做成了一个个单独的工程,目的是为了使刚接触RT-Thread的 ...…

查看全部问答>

07.28【每周讨论】相信大家都知道C语言了,那么E(易)语言呢?

第一次听说E语言听过,不了解最近刚刚知道一点点知道,感觉不错 [ 本帖最后由 longxtianya 于 2011-7-30 19:48 编辑 ]…

查看全部问答>

SimpliciTI-IAR-1.2.0>>CC430EM里的程序为何不能用了????

我用SimpliciTI-IAR-1.2.0里的cc430例程,用cc430F5137模块来测试程序AP_as_Data_Hub,为何AP和ED连接不上了,我的ED发送地址是0xFF,为何发不出去了???望各位老师能够解答我的难题 !在此谢过!…

查看全部问答>

LM3S9B96开发板里面怎么没有spiflash_rw例程?

    lm3s9b96开发板里面怎么没有spiflash_rw例程?   …

查看全部问答>