QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 1481|回复: 4
收起左侧

[讨论结束] 51定时中断

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

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

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

x
请教各位,以下是一段51的普通定时中断程序,该程序产生一个10ms方波信号,由P1.0端输出。我有几个关于中断的问题不是很清楚,烦请各位指教:
* k& q+ _4 R, W3 C* p(1)中断子程序结束之后,即第22行之后,程序转向哪里?第几行?, _/ r+ K7 b  U8 M, ~3 P
(2)整个中断子程序的执行时间是不是由第20和第21行决定的?系统自动根据这两行决定子程序执行时间吗?如果将这两行删除之后,中断子程序的执行时间又是怎样决定的呢?  R  w! W4 y) ^* r: e
(3)其中第七行程序是在什么时候开始执行的?* H1 ?! W2 H& }8 i1 U4 w* |
(4)程序执行路线是不是这样的:1---2---(8,9...16)---4---5---(18....22 )           22之后呢??????8 e* x4 {% d4 V! V1 @4 {7 b
       在下先行谢过各位,还请各位不吝指教,谢谢 :P :P :P * s" a/ E" Y% N  o0 ^- ~% n
$MOD51                                 -------------1, n  \& }1 q* `1 {$ u- J
                 ORG   0000H         -------------2
' U* }" A% H. c1 E- N! S! a! W0 k                 LJMP  START        -------------3' U* i2 z) \/ L* \5 c9 l5 G
                 ORG   000BH         -------------4
+ t7 t* y1 K# j* m0 q" @" B                  LJMP  TO_ISR       -------------5
& P/ J. ~9 z) W9 F9 U# x4 R;                                               -------------6
; B9 }* a$ X" Z4 [4 U5 t                  ORG   0030H         -------------7
: i- k- t, Q$ t$ k# DSTART:     SETB  P1.0             -------------8! {/ Z0 X4 M0 f, C) b3 B
                  MOV   TMOD,#11H -------------9
6 ?& e- r# {- [2 m* s7 Q0 N                  MOV   TH0,#0DBH -------------10; ^; ^( C( _. S
                  MOV   TL0,#0FFH  -------------11. l3 J9 p# x. P/ `0 q
                  CLR   TF0              -------------12
& b+ F3 B2 R0 Q                  SETB  TR0             -------------13" C. ]& O. S/ P, q
                  SETB  ET0              -------------146 m8 `  _/ q) ?# ^' [- a9 o- Y9 J
                  SETB  EA                -------------15
3 A# S; h, i4 x8 p( j/ @. LLOOP:       SJMP  LOOP      -----------------16. y- Y; z) Z' M( f7 I* f, R
;                                                -------------17
! q' k7 r( z/ x7 C4 X3 G7 kTO_ISR:     CPL   P1.0             -------------18( M0 Q8 f2 |. t
                   CLR   TF0             -------------193 [% \$ Y, D  `& ?0 r
                   MOV   TH0,#0DBH -------------200 {7 _5 a  |$ K6 e9 U0 J0 K  v8 E
                   MOV   TL0,#0FFH -------------21
+ z* W2 V7 B" `8 v: y3 o9 L                   RETI                      -------------22
9 W# c- ?$ I" s                   END                       -------------23
发表于 2007-10-31 20:36:07 | 显示全部楼层 来自: 中国上海
我来解答: 7 D8 \. S; c7 P/ r/ w% X
1。此问题提得好(对于初学者来说)!. f- D5 D- ?* [! j
2。问题1:“中断子程序结束之后……?”,就回到主程序一直重复执行“LOOP: 1 J$ p) `4 D2 d0 y7 [2 L
SJMP  LOOP
-----16这行。
! v  D9 I5 `8 j+ I' A3。问题2:“整个中断子程序的执行时间是不是由第20和第21行决定的?…….”。此提法有错 (不是中断子程序的执行时间!若是要求中断子程序的执行时间,则需计算一下“---18……---20行的所有指令执行时间总和即可!”),
! N$ S6 j. ?( M3 Z7 `4。正确的提法为“定时器是不是由第20和第21行决定的?” 8 ^# L# \8 ?3 b1 O5 _3 `5 u
当启动主程序后,即执行“---9……---15行” 后就决定了定时器的延时特性并每当定时器到时后,在中断程序里需再次给定时器赋值,以达到10ms至要求。如“如果将这两行删除之后……”,则定时器到时后TH0 TL0将以最大的赋于#0FFH值并进行延时。这延时将大大超过10ms
+ a2 w$ N. k' D3 R; `5。问题3:“其中第七行程序是在什么时候开始执行的?”实为第八行它是紧跟在第三行执行之后!
1 x% q' t' i+ ~5 p6。问题4:“程序执行路线是不是这样的:……: L- ]! P- z7 m; l) b6 Z( ?& X6 W/ e
主程序的程序执行路线是:3---8---9……---15---16,以后一直重复执行---16
# b6 C$ v8 a- z- s中断子程序的程序执行路线是(当有定时器中断信号时!):5---18---……---21---22% g/ e6 a, Z8 M* w) I2 R! o$ C
7。另需指出: ORG 是汇编指令中的伪指令,供编译之用,是不参与实际指令的执行!
8。希望我的解答能给楼主帮助。
8 Y2 v. g& a9 z2 b4 Z
7 \8 Z& p2 p0 a# c- m- Z
[ 本帖最后由 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” ' W8 ?7 S! a$ m: K4 V; Z
1。看来你已有所领悟了,很是为你高兴!, D. w; L) a5 m$ i2 H% Z$ k
2。再补充一点:每当定时器到时,转去执行中断子程序。在中断子程序中由于“CPL   P1.0
2 I( ^3 H/ S; w* n: A8 q8 ]5 K. w--
-18的执行,使“P1.0的输出口状态取反一次,从而就形成“P1.0的输出口以每10ms
延时的方波输出。
) i* E3 i+ I, O( R3 `/ p3。期望你今后编程更顺利!
6 L+ |; e: d$ |3 O2 c( V+ S& y' c% p! w9 P  o, n/ c4 @
[ 本帖最后由 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 )

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