一、延时程序剖析
上一次课中,咱们现已知道,程序中的符号R7、R6是代表了一个个的RAM单元,是用来放一些数据的,下面咱们再来看一下其它符号的含义。
DELAY: MOV R7,#250 ;(6)
D1: MOV R6,#250 ;(7)
D2: DJNZ R6,D2 ;(8)
DJNZ R7,D1 ;(9)
RET ;(10)
1.MOV:这是一条指令,意思是传递数据。提到传递,咱们都很清楚,传东西要从一个人的手上传到另一个人的手上,也便是说要有一个接受者,一个传递者和相同东西。从指令MOV R7,#250中来剖析,R7是一个接受者,250是被传递的数,传递者在这条指令中被省掉了(留意:并不是每一条传递指令都会省的,事实上大部份数据传递指令都会有传递者)。它的含义也很明显:将数据250送到R7中去,因而履行完这条指令后,R7单元中的值就应当是250。在250前面有个#号,这又是什么意思呢?这个#便是用来阐明250便是一个被传递的东西自身,而不是传递者。那么MOV R6,#250是什么意思,应当不必剖析了吧。
2.DJNZ:这是另一条指令,咱们来看一下这条指令后边跟着的两个东西,一个是R6,一个是D2,R6咱们当然已知是什么了,查一下D2是什么。D2在本行的前面,咱们已学过,这称之为标号。标号的用处是什么呢?便是给本行起一个姓名。DJNZ指令的履行进程是这样的,它将这以后边的第一个参数中的值减1,然后看一下,这个值是否等于0,假如等于0,就往下履行,假如不等于0,就搬运,转到什么当地去呢?或许咱们已猜到了,转到第二个参数所指定的当地去(请大家用自已的话讲一下这条句子是怎样履行的)。本条指令的终究履行成果便是,在原地转圈250次。
3.履行完了DJNZ R6,D2之后(也便是R6的值等于0之后),就会去履行下面一行,也便是DJNZ R7,D1,请咱们自行剖析一下这句话履行的成果。(转去履行MOV R6,#250,一起R7中的值减1),终究DJNZ R6,D2这句话将被履行250*250=62500次,履行这么屡次同一条指令干吗?便是为了延时。
4.一个问题:假如在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毫秒。
操练:规划一个延时100毫秒的延时程序。
关键剖析:1、一个单元中的数是否能够超越255。2、怎么分配两个数。
三、复位电路
任何单片机在作业之前都要有个复位的进程,复位是什么意思呢?它就象是咱们上课之前打的准备铃。准备铃一响,咱们就自动地从操场、其它当地进入教室了,在这一段时刻里,是没有教师干涉的,对单片机来说,是程序还没有开端履行,是在做准备作业。明显,准备作业不需求太长的时刻,复位只需求5ms的时刻就能够了。怎么进行复位呢?只需在单片机的RST引脚上加上高电平,就能够了,按上面所说,时刻不少于5ms。为了到达这个要求,能够用许多种方法,这儿供给一种供参阅,见图1。实际上,咱们在上一次试验的图中已见到过了。
这种复位电路的作业原理是:通电时,电容两头适当所以短路,所以RST引脚上为高电平,然后电源经过电阻对%&&&&&%充电,RST端电压渐渐下降,降到必定程序,即为低电平,单片机开端正常作业。