1. <em id="3qmea"><ol id="3qmea"></ol></em>
    2. <em id="3qmea"></em>
      中国领先的单片机及嵌入式资讯教程开发工具提供者!
      当前位置单片机教程网 >> 基础教程 >> 浏览文章

      5课:单片机延时程序分析

      作者:佚名   来源:本站原创   点击数:  更新时间2007年08月16日   字体

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

      DELAY:   MOV R7#250 ;(6)

      D1:   MOV R6#250    ;(7)

      D2:   DJNZ R6D2   ;(8)

      DJNZ R7D1         ;(9)

      RET         ;(10)

      单片机延时程序

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

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

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

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

      二时序分析

        前面我们介绍了延时程序但这?#20849;?#23436;善因为我们只知道DJNZ R6D2这句话会被执行62500次但是执行这么多次需要多长时间呢是否满足我们的要求呢?#35838;?#20204;?#20849;?#30693;道所以下面要来解决这个问题

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

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

      一个机器周期包括12个时?#21448;?#26399;下面让我们算一下一个机器周期?#23884;?#38271;时间吧设一个单片机工作于12M晶体震荡器它的时?#21448;?#26399;是1/12微秒它的一个机器周期是12*1/12也就是1微秒请计算一个工作于6M晶体震荡器的单片机它的机器周期?#23884;?#23569;

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

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

       如果你对上面几句还是不懂请看这里的详解
      单片机复位电路

      复位后CPU状态

             PC  0000H         TMOD 00H

             Acc 00H           TCON 00H

             B   00H           TH0  00H

             PSW 00H           TL0  00H

             SP  07H           TH1  00H

             DPTR0000H         TL1  00H

             P0P3FFH         SCON 00H

             IP×××00000B    SBUF 不定

             IE0××00000B     PCON 0×××0000B

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

        这?#25351;?#20301;电路的工作原理是?#21644;?#30005;时电容两端相当于?#23884;?#36335;于是RST管脚上为高电平然后电源通过电阻对电容充电RST端电压慢慢下降降到一定程序?#27425;?#20302;电平单片机开始正常工作

      发表评论告诉好友收藏此文关闭窗口

      文章评论

      ຣ11ѡ5app

        
        
        1. <em id="3qmea"><ol id="3qmea"></ol></em>
        2. <em id="3qmea"></em>

            
            
            1. <em id="3qmea"><ol id="3qmea"></ol></em>
            2. <em id="3qmea"></em>