QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
8天前
查看: 1426|回复: 4
收起左侧

[讨论结束] 51定时中断

 关闭 [复制链接]
发表于 2007-10-31 18:33:32 | 显示全部楼层 |阅读模式 来自: 中国河北邢台

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

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

x
请教各位,以下是一段51的普通定时中断程序,该程序产生一个10ms方波信号,由P1.0端输出。我有几个关于中断的问题不是很清楚,烦请各位指教:
7 e" T0 H$ a3 A& i2 f3 H5 M(1)中断子程序结束之后,即第22行之后,程序转向哪里?第几行?9 Q! M3 [. o1 y2 q' G: j- q$ p4 u
(2)整个中断子程序的执行时间是不是由第20和第21行决定的?系统自动根据这两行决定子程序执行时间吗?如果将这两行删除之后,中断子程序的执行时间又是怎样决定的呢?: h  E  M" I" L% \: D6 J0 C
(3)其中第七行程序是在什么时候开始执行的?# M3 o. n7 b; x: t8 \
(4)程序执行路线是不是这样的:1---2---(8,9...16)---4---5---(18....22 )           22之后呢??????
& v; C& E' f9 z. v, s5 C* U       在下先行谢过各位,还请各位不吝指教,谢谢 :P :P :P & f( @0 z  G1 C, |' u5 C( d
$MOD51                                 -------------15 S  x& e1 v3 p: f$ g
                 ORG   0000H         -------------2( u( R% q' K" k% c, _, T: C
                 LJMP  START        -------------3+ p5 C! Q/ x; r9 e7 {
                 ORG   000BH         -------------45 {% m! g: c" z9 I4 }2 R
                  LJMP  TO_ISR       -------------5, \# B! z& A9 ]
;                                               -------------61 Y( X% K& h1 t# V" m$ _7 r  o
                  ORG   0030H         -------------7
# q6 @+ e" @9 E3 SSTART:     SETB  P1.0             -------------8: D. n) ~& e' D$ ?" t& g
                  MOV   TMOD,#11H -------------9
% [  u7 J9 b! A( U% C6 I                  MOV   TH0,#0DBH -------------10
' Q7 E" j; P/ b: y, F                  MOV   TL0,#0FFH  -------------11
+ f* H) w/ O4 R2 S9 ]: d                  CLR   TF0              -------------12
3 q4 W1 H3 q6 v  L+ Z5 J, @, U* T                  SETB  TR0             -------------13: r' g; U8 m2 T4 L7 \1 L% C
                  SETB  ET0              -------------14& i- |+ ^" u# W6 U& j
                  SETB  EA                -------------15# X7 p9 w; c3 h! W0 n
LOOP:       SJMP  LOOP      -----------------16
4 a* P! C, }5 F( r. m;                                                -------------17  p" t+ u0 H7 v% Y, I
TO_ISR:     CPL   P1.0             -------------189 K: ?" y* n# G- K7 @. ]
                   CLR   TF0             -------------19( j; Z4 S- n  C6 T/ T: ~
                   MOV   TH0,#0DBH -------------20" \4 ]3 j9 e% a1 y: }
                   MOV   TL0,#0FFH -------------216 g! N/ D% _& {# t" D# k. _! U
                   RETI                      -------------227 V. g$ i4 a8 u: |
                   END                       -------------23
发表于 2007-10-31 20:36:07 | 显示全部楼层 来自: 中国上海
我来解答: & k) t3 s8 T# e
1。此问题提得好(对于初学者来说)!  i, H1 h  g5 P
2。问题1:“中断子程序结束之后……?”,就回到主程序一直重复执行“LOOP:
8 n1 z# _5 g5 d  r  d! ]SJMP  LOOP
-----16这行。
4 O, M  L/ w/ Q# [& {4 m$ M3。问题2:“整个中断子程序的执行时间是不是由第20和第21行决定的?…….”。此提法有错 (不是中断子程序的执行时间!若是要求中断子程序的执行时间,则需计算一下“---18……---20行的所有指令执行时间总和即可!”),
5 p5 j0 j) X! s6 Z' w4。正确的提法为“定时器是不是由第20和第21行决定的?” 7 g/ J' @4 X/ v8 I' f
当启动主程序后,即执行“---9……---15行” 后就决定了定时器的延时特性并每当定时器到时后,在中断程序里需再次给定时器赋值,以达到10ms至要求。如“如果将这两行删除之后……”,则定时器到时后TH0 TL0将以最大的赋于#0FFH值并进行延时。这延时将大大超过10ms
+ P$ d" t: k- R) t1 h, }8 y5。问题3:“其中第七行程序是在什么时候开始执行的?”实为第八行它是紧跟在第三行执行之后!
4 l% H) p3 u1 n, F2 D* A6。问题4:“程序执行路线是不是这样的:……
3 L. [: s* u/ d' e4 @6 ]1 y1 i主程序的程序执行路线是:3---8---9……---15---16,以后一直重复执行---16
8 I8 D7 U  \/ \) C# B- F  Q0 u中断子程序的程序执行路线是(当有定时器中断信号时!):5---18---……---21---22
: Z9 M! F# y: V( p4 Q
7。另需指出: ORG 是汇编指令中的伪指令,供编译之用,是不参与实际指令的执行!
8。希望我的解答能给楼主帮助。
& x$ Y0 m# b* m$ w! x& K4 |& q

, b$ B7 _& B# C. @$ r' i" _[ 本帖最后由 zhous_ch 于 2007-10-31 21:02 编辑 ]

评分

参与人数 1三维币 +10 收起 理由
bdblbyq + 10 应助

查看全部评分

 楼主| 发表于 2007-11-1 11:08:08 | 显示全部楼层 来自: 中国河北邢台

回复

首先感谢您的解答,谢谢!另外,我是不是可以这样理解:整个程序的执行过程是      只执行一次主程序,然后在第16行等待定时,等定时一到,就转向第4---5---(18---22 ) 执行中断子程序,子程序结束又到16行等待定时----定时到---中断子程序----16行--------定时到-----中断子程序-----------------如此不断循环以形成10ms方波输出???
发表于 2007-11-1 19:15:26 | 显示全部楼层 来自: 中国上海
回复“word1236”
' T$ T: |! z$ |6 K# }0 ~1。看来你已有所领悟了,很是为你高兴!
6 ^% U! b+ q1 y# M0 G2。再补充一点:每当定时器到时,转去执行中断子程序。在中断子程序中由于“CPL   P1.02 F) N' \" P' G1 E
--
-18的执行,使“P1.0的输出口状态取反一次,从而就形成“P1.0的输出口以每10ms
延时的方波输出。0 K* X  Y1 a3 `" u0 t
3。期望你今后编程更顺利!
0 V( o2 i- v8 w" p3 U3 a1 m
; a, V2 b1 t+ O8 W' l$ J[ 本帖最后由 zhous_ch 于 2007-11-3 12:19 编辑 ]

评分

参与人数 1三维币 +5 收起 理由
bdblbyq + 5 应助

查看全部评分

发表于 2008-7-14 10:12:46 | 显示全部楼层 来自: 中国江苏常州
楼上的解释的很清楚很透彻啊!建议楼主边练边学这样才能学好单片机!呵呵
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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