找回密码
 注册
关于网站域名变更的通知
查看: 165|回复: 2
打印 上一主题 下一主题

单片机教程5延时程序分析

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-7-14 10:22 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
上一次课中,我们已经知道,程序中的符号R7、R6是代表了一个个的RAM单元,是用来放一些数据的,下面我们再来看一下其它符号的含义。3 \1 e3 b. `6 y! u" B9 u: B" R: @

/ p2 Z. w4 B" D' u单片机延时程序〉  , g, G0 i2 o9 A. h+ I' D
8 b$ x: ]! @) d9 I% @
MOV:这是一条指令,意思是传递数据。说到传递,我们都很清楚,传东西要从一本人的手上传到另一本人的手上,也就是说要有一个接受者,一个传递者和一样东西。从指令MOV R7,#250中来分析,R7是一个接受者,250是被传递的数,传递者在这条指令中被省略了(注意:并不是每一条传递指令都会省的,事实上大部份数据传递指令都会有传递者)。它的意义也很明显:将数据250送到R7中去,因此执行完这条指令后,R7单元中的值就应当是250。在250前面有个#号,这又是什么意思呢?这个#就是用来说明250就是一个被传递的东西本身,而不是传递者。那么MOV R6,#250是什么意思,应当不用分析了吧。  
# [, {; s4 W5 {) g/ r
% V8 [) x; W, R# T1 fDJNZ:这是另一条指令,我们来看一下这条指令后面跟着的两个东西,一个是R6,一个是D2,R6我们当然已知是什么了,查一下D2是什么。D2在本行的前面,我们已学过,这称之为标号。标号的用途是什么呢?就是给本行起一个名字。DJNZ指令的执行过程是这样的,它将其后面的第一个参数中的值减1,然后看一下,这个值是否等于0,如果等于0,就往下执行,如果不等于0,就转移,转到什么地方去呢?可能大家已猜到了,转到第二个参数所指定的地方去(请大家用自已的话讲一下这条语句是怎样执行的)。本条指令的最终执行结果就是,在原地转圈250次。  9 |4 N# J! b- g. \
+ H, Q( e- R/ L
执行完了DJNZ R6,D2之后(也就是R6的值等于0之后),就会去执行下面一行,也就是DJNZ R7,D1,请大家自行分析一下这句话执行的结果。(转去执行MOV R6,#250,同时R7中的值减1),最终DJNZ R6,D2这句话将被执行250*250=62500次,执行这么多次同一条指令干吗?
3 m* E  Y; y8 B. x就是为了延时。一个问题:如果在R6中放入0,会有什么样的结果。, |8 u4 k0 G6 U4 ]

# ^! J2 f2 G4 l" x二、时序分析:
3 C9 X5 R) w9 f4 W; B0 s 前面我们介绍了延时程序,但这还不完善,因为,我们只知道DJNZ R6,D2这句话会被执行62500次,但是执行这么多次需要多长时间呢?是否满足我们的要求呢?我们还不知道,所以下面要来解决这个问题。  / U& ]6 I1 j. O. j8 e% o! @* q

1 U+ V! Y9 ^3 ?! J/ m$ I0 [4 O先提一个问题:我们学校里什么是最重要的。(铃声)校长能出差,老师能休息,但学校一日无铃声必定大乱。整个学校就是在铃声的统一指挥下,步调一致,统一协调地工作着。这个铃是按一定的时间安排来响的,我们能称之为“时序��时间的次序”。一个由人组成的单位尚且要有一定的时序,计算机当然更要有严格的时序。事实上,计算机更象一个大钟,什么时候分针动,什么时候秒针动,什么时候时针动,都有严格的规定,一点也不能乱。计算机要完成的事更复杂,所以它的时序也更复杂。  
. g, ~% N2 R+ F$ _
$ e* H" c+ l( M+ A0 a我们已知,计算机工作时,是一条一条地从ROM中取指令,然后一步一步地执行,我们规定:计算机访问一次存储器的时间,称之为一个机器周期。这是一个时间基准,好象我们人用“秒”作为我们的时间基准一样,为什么不干脆用“秒”,多好,很习惯,学下去我们就会知道用“秒”反而不习惯。; W6 b# [2 P) G1 B
6 `. ~+ k7 D! @
一个机器周期包括12个时钟周期。下面让我们算一下一个机器周期是多长时间吧。设一个单片机工作于12M晶体震荡器,它的时钟周期是1/12(微秒)。它的一个机器周期是12*(1/12)也就是1微秒。(请计算一个工作于6M晶体震荡器的单片机,它的机器周期是多少)。  
: [9 }  `4 w5 I% b# r6 K
2 J9 H' c9 M) W4 v" sMCS-51单片机的所有指令中,有一些完成得比较快,只要一个机器周期就行了,有一些完成得比较慢,得要2个机器周期,还有两条指令要4个机器周期才行。这也不难再解,不是吗?我让你扫地的执行要完成总得比要你完成擦黑板的指令时间要长。为了恒量指令执行时间的长短,又引入一个新的概念:指令周期。所谓指令周期就是指执行一条指令的时间。INTEL对每一条指令都给出了它的指令周期数,这些数据,大部份不需要我们去记忆,但是有一些指令是需要记住的,如DJNZ指令是双周期指令。  6 [  H0 c2 H  W+ k/ z
5 @* l$ K, c  w0 [3 }$ K$ }' b
下面让我们来计算刚才的延时。首先必须要知道晶体震荡器的频率,我们设所用晶体震荡器为12M,则一个机器周期就是1微秒。而DJNZ指令是双周期指令,所以执行一次要2个微秒。一共执行62500次,正好125000微秒,也就是125毫秒。
# I- y3 W0 f! v
) L+ E1 V! H, m, J+ R+ h练习:设计一个延时100毫秒的延时程序。
: G0 _0 p2 V* h: Y要点分析:1、一个单元中的数是否能超过255。2、如何分配两个数。
% M* G! x" I, r: k
# ]: @" Q) e% {1 ^0 [1 P三、复位电路, A( U: h( l# @
& Z) U3 E9 l) a' C  V7 ]
一、复位方式
- z9 c0 }6 t7 q9 g0 Q  c⒈ 复位条件
5 Q2 o* K( S3 \( h# A! Q        RST引脚保持2个机器周期以上的高电平。# @/ K5 x$ ^! J! g# n" ~4 w$ X/ T
3 i" y- ]+ d( j" y5 x! j- ^5 l
⒉ 复位电路- p( j0 w1 s( n6 `

7 w/ o! V6 E) q8 a2 ^/ }* Y: Z〈单片机复位电路〉8 j# C. F3 {# y2 r% h  h6 d7 J

: k- p6 Y4 \: m+ F# v⒊ 复位后CPU状态      
! w0 W* C/ k) {+ d" v. z! A6 q
7 k5 [& U  K$ v: l
# b3 h: K& M+ k! y7 }任何单片机在工作之前都要有个复位的过程,复位是什么意思呢?它就象是我们上课之前打的预备铃。预备铃一响,大家就自动地从操场、其它地方进入教室了,在这一段时间里,是没有老师干预的,对单片机来说,是程序还没有开始执行,是在做准备工作。显然,准备工作不需要太长的时间,复位只需要5ms的时间就能了。如何进行复位呢?只要在单片机的RST管脚上加上高电平,就能了,按上面所说,时间不少于5ms。为了达到这个要求,能用很多种办法,这里供给一种供参考,见图1。实际上,我们在上一次实验的图中已见到过了。  9 b3 ^8 @" i1 s& v  R6 q" r

9 ?; d, h3 n4 x这种复位电路的工作原理是:通电时,电容两端相当于是短路,于是RST管脚上为高电平,然后电源通过电阻对电容充电,RST端电压慢慢下降,降到一定程序,即为低电平,单片机开始正常工作。# ^. g& k' R- V. p+ H
1 N. z* p. O. f$ f0 j, ?: T
: H: a/ [' N  V8 l' v0 F. k

) }7 b; d( x8 A: V! j
. I: W- G) o0 I% Y3 `4 x
                                                                                                                                                                                                                                
4 I7 }* R% y! Z6 e                                                                                                
4 k0 ~: x3 y0 M4 |# v# y

该用户从未签到

2#
发表于 2022-7-14 11:18 | 只看该作者
很不错哦,看看

该用户从未签到

3#
发表于 2022-7-14 13:48 | 只看该作者
很好的,学习资料。初学者福音。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-8 22:45 , Processed in 0.156250 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表