QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

[讨论结束] 51定时中断

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

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

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

x
请教各位,以下是一段51的普通定时中断程序,该程序产生一个10ms方波信号,由P1.0端输出。我有几个关于中断的问题不是很清楚,烦请各位指教:( Y% h4 B' m9 m+ N! g0 v% \, e* q' d
(1)中断子程序结束之后,即第22行之后,程序转向哪里?第几行?' T# V1 L( |1 s/ Y9 s3 n! a/ J
(2)整个中断子程序的执行时间是不是由第20和第21行决定的?系统自动根据这两行决定子程序执行时间吗?如果将这两行删除之后,中断子程序的执行时间又是怎样决定的呢?  q! d: P. K, @7 D
(3)其中第七行程序是在什么时候开始执行的?
! J! A! _# q$ V1 z9 A' Z/ j5 j(4)程序执行路线是不是这样的:1---2---(8,9...16)---4---5---(18....22 )           22之后呢??????
4 _2 u! c1 Q$ a! E( b       在下先行谢过各位,还请各位不吝指教,谢谢 :P :P :P , X9 p4 z2 w) F: E- I- ]% N
$MOD51                                 -------------1& d& s  u& F3 \
                 ORG   0000H         -------------2
% o: e$ |3 {, p. U* E- p: r% m2 t6 H                 LJMP  START        -------------3
/ y9 W* a! m5 X* [0 M. o+ Q                 ORG   000BH         -------------46 E0 K7 c' H2 F/ m% @) v5 a* Z, B9 I
                  LJMP  TO_ISR       -------------5
9 z; y+ x$ l/ {  J;                                               -------------6
* {: ^9 E6 u" p7 s0 h& }2 }, \' h( A                  ORG   0030H         -------------7
7 N, b9 T- b- y3 _/ m/ y$ lSTART:     SETB  P1.0             -------------8
6 }. v7 p; q* `/ C4 u                  MOV   TMOD,#11H -------------94 ^. U" K. A( m- v' w
                  MOV   TH0,#0DBH -------------10
& I- C. }8 l; T1 E                  MOV   TL0,#0FFH  -------------11
" Z0 [( n% m, `0 E7 W5 s                  CLR   TF0              -------------12( D& u; _4 K- y! x- w8 L6 H% E
                  SETB  TR0             -------------13: B% r3 C0 ]+ R8 \9 n
                  SETB  ET0              -------------14, Y  h) o- l  L) R, n" H! h. B
                  SETB  EA                -------------15
$ [; S# o; c* p9 G  J+ o' T) RLOOP:       SJMP  LOOP      -----------------16/ R% w# O8 I: n6 Z
;                                                -------------17
8 W+ U0 L- f1 }2 O! x% j9 iTO_ISR:     CPL   P1.0             -------------18" y0 y5 g+ d% j) m9 A( m2 ]
                   CLR   TF0             -------------19
" p% N+ \( s8 f2 j' B                   MOV   TH0,#0DBH -------------20
* M+ j  N6 C1 B* J9 T$ @7 e. i8 A' i+ H                   MOV   TL0,#0FFH -------------21! V" `, k6 V" ?+ K2 ^7 v; j
                   RETI                      -------------22
+ |5 Y3 U: b1 E: N$ f& E                   END                       -------------23
发表于 2007-10-31 20:36:07 | 显示全部楼层 来自: 中国上海
我来解答:
. U* k3 M; \' ?( J! N1。此问题提得好(对于初学者来说)!6 d2 b5 F, N. d
2。问题1:“中断子程序结束之后……?”,就回到主程序一直重复执行“LOOP:
" I8 M( N$ i. d" k8 g- v) `! FSJMP  LOOP
-----16这行。0 b2 ^: q. Y; c4 x; S* ^1 ~+ e
3。问题2:“整个中断子程序的执行时间是不是由第20和第21行决定的?…….”。此提法有错 (不是中断子程序的执行时间!若是要求中断子程序的执行时间,则需计算一下“---18……---20行的所有指令执行时间总和即可!”),
) @6 T- Q4 J0 Y4。正确的提法为“定时器是不是由第20和第21行决定的?”
+ `8 P, f# W8 w& N当启动主程序后,即执行“---9……---15行” 后就决定了定时器的延时特性并每当定时器到时后,在中断程序里需再次给定时器赋值,以达到10ms至要求。如“如果将这两行删除之后……”,则定时器到时后TH0 TL0将以最大的赋于#0FFH值并进行延时。这延时将大大超过10ms
6 J" @# l8 M. C# d9 c: N9 E5。问题3:“其中第七行程序是在什么时候开始执行的?”实为第八行它是紧跟在第三行执行之后! # R+ [; n6 c( s" d: j" {; \- G
6。问题4:“程序执行路线是不是这样的:……
) g$ z5 I3 q3 a主程序的程序执行路线是:3---8---9……---15---16,以后一直重复执行---16; e6 ]6 R4 G/ V( b- `3 R+ L, W
中断子程序的程序执行路线是(当有定时器中断信号时!):5---18---……---21---22
2 Q+ }8 m& b5 v6 x9 L% e
7。另需指出: ORG 是汇编指令中的伪指令,供编译之用,是不参与实际指令的执行!
8。希望我的解答能给楼主帮助。

8 x. O' u0 T& Z* [4 ~. O0 {8 [7 V5 i+ S
[ 本帖最后由 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”
2 r3 f. `6 {1 z1 \% e  ]1。看来你已有所领悟了,很是为你高兴!" M) i( w2 a* r# ~$ b
2。再补充一点:每当定时器到时,转去执行中断子程序。在中断子程序中由于“CPL   P1.0
4 L$ D  \* |6 }9 {6 g--
-18的执行,使“P1.0的输出口状态取反一次,从而就形成“P1.0的输出口以每10ms
延时的方波输出。
8 Y! T8 g5 Q  f" a5 o' ~6 t3。期望你今后编程更顺利!
+ p/ l) O& H+ t; j4 W
: `7 z2 W! N" I$ M( W3 S) A* Z4 I[ 本帖最后由 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 )

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