QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

[讨论结束] 51定时中断

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

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

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

x
请教各位,以下是一段51的普通定时中断程序,该程序产生一个10ms方波信号,由P1.0端输出。我有几个关于中断的问题不是很清楚,烦请各位指教:
- F- o- u$ g4 |7 E(1)中断子程序结束之后,即第22行之后,程序转向哪里?第几行?% d) a! c  H  h0 ?$ j4 L
(2)整个中断子程序的执行时间是不是由第20和第21行决定的?系统自动根据这两行决定子程序执行时间吗?如果将这两行删除之后,中断子程序的执行时间又是怎样决定的呢?
; v, ]6 j0 `+ `( ^- Q(3)其中第七行程序是在什么时候开始执行的?
- w2 c) u% X1 A$ u' E+ e; B3 Q/ F: ](4)程序执行路线是不是这样的:1---2---(8,9...16)---4---5---(18....22 )           22之后呢??????7 R. i" ~' j5 G+ A  O
       在下先行谢过各位,还请各位不吝指教,谢谢 :P :P :P 7 |! U. E9 ]( o
$MOD51                                 -------------1
1 X( M. U" X+ ^% ?+ B( x: u                 ORG   0000H         -------------2
" W. a' O6 k( j1 F' Q5 ^% n9 b, y0 Q) X                 LJMP  START        -------------3: X  m% |: Z* U6 n$ R
                 ORG   000BH         -------------4) j; A' f1 |; E: {  }$ w  s+ b; _2 v
                  LJMP  TO_ISR       -------------5
, E# V. c0 f2 `* u" \- q;                                               -------------6+ Y* r- o2 S; U+ x) `' ?
                  ORG   0030H         -------------7
. c2 {9 ~0 h  f. I2 \& b& r/ hSTART:     SETB  P1.0             -------------8
3 G1 N+ \4 O. D7 |" w                  MOV   TMOD,#11H -------------91 v) ^9 A  h5 h6 R  k( i( p
                  MOV   TH0,#0DBH -------------109 g& O. J% T# }! z& G
                  MOV   TL0,#0FFH  -------------11! ^6 z; R3 y7 z0 Z+ ~& s4 Y
                  CLR   TF0              -------------12
6 \$ Y2 L4 f7 f7 Z# _% L, H                  SETB  TR0             -------------13* s) ], S, F! |# F2 X* g
                  SETB  ET0              -------------14$ l- {" M& I9 k) K% t9 F3 [1 |7 S
                  SETB  EA                -------------153 V5 x5 `+ q/ S& I* g5 u* q
LOOP:       SJMP  LOOP      -----------------16
$ G2 E* N+ g$ L/ e$ {;                                                -------------17
4 Y$ h5 i  \4 G1 c  O2 ?TO_ISR:     CPL   P1.0             -------------18
( X* y) ]% c8 `" L8 i+ m7 ?& x                   CLR   TF0             -------------191 Z) T) V6 ]/ b( ^7 ~* ]6 S& W
                   MOV   TH0,#0DBH -------------20
  m. C, [0 x5 Y8 d                   MOV   TL0,#0FFH -------------21
1 ?% I; a, X, r! f                   RETI                      -------------22# Q: _; z2 n1 Q/ m. Y: E7 g
                   END                       -------------23
发表于 2007-10-31 20:36:07 | 显示全部楼层 来自: 中国上海
我来解答: & v' u* L6 T8 O- Z0 K$ [
1。此问题提得好(对于初学者来说)!
% ~4 |0 x- [% G3 ]1 x2。问题1:“中断子程序结束之后……?”,就回到主程序一直重复执行“LOOP:
0 e. l- R( {9 B. w# fSJMP  LOOP
-----16这行。
* @/ X% m# j5 A& _+ M2 X3。问题2:“整个中断子程序的执行时间是不是由第20和第21行决定的?…….”。此提法有错 (不是中断子程序的执行时间!若是要求中断子程序的执行时间,则需计算一下“---18……---20行的所有指令执行时间总和即可!”),
! n) V: a  y3 r: ?4。正确的提法为“定时器是不是由第20和第21行决定的?” ) [6 t/ a, j( U% H  y* n: }
当启动主程序后,即执行“---9……---15行” 后就决定了定时器的延时特性并每当定时器到时后,在中断程序里需再次给定时器赋值,以达到10ms至要求。如“如果将这两行删除之后……”,则定时器到时后TH0 TL0将以最大的赋于#0FFH值并进行延时。这延时将大大超过10ms! B3 n- j- k! ~5 S0 [, a; w5 T
5。问题3:“其中第七行程序是在什么时候开始执行的?”实为第八行它是紧跟在第三行执行之后!
; g; }. S; Z& q' t; I+ }6。问题4:“程序执行路线是不是这样的:……
! x; `, r$ ]7 ~1 {主程序的程序执行路线是:3---8---9……---15---16,以后一直重复执行---16
' G2 m/ G0 _8 ^2 j5 k  n中断子程序的程序执行路线是(当有定时器中断信号时!):5---18---……---21---22- N" ]$ i8 ]3 T4 a2 @/ a8 J
7。另需指出: ORG 是汇编指令中的伪指令,供编译之用,是不参与实际指令的执行!
8。希望我的解答能给楼主帮助。
8 N( H5 t% J' n* ^$ {7 \3 Q8 x
+ `; k! t9 ]) B, P: c
[ 本帖最后由 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”
* `8 ~/ G0 B* Z  n/ }1。看来你已有所领悟了,很是为你高兴!+ q8 h  w2 L5 C8 ~; m
2。再补充一点:每当定时器到时,转去执行中断子程序。在中断子程序中由于“CPL   P1.0
2 B$ K+ F8 V' f4 {2 k--
-18的执行,使“P1.0的输出口状态取反一次,从而就形成“P1.0的输出口以每10ms
延时的方波输出。& k5 `4 Y$ e" ?! m/ n, B+ i
3。期望你今后编程更顺利! 4 l) B+ }: P$ P
2 |' D  T/ ~7 ^4 L6 T3 M
[ 本帖最后由 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 )

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