QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

[讨论结束] 51定时中断

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

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

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

x
请教各位,以下是一段51的普通定时中断程序,该程序产生一个10ms方波信号,由P1.0端输出。我有几个关于中断的问题不是很清楚,烦请各位指教:
! G& t' n' t: K" R3 p! [& F5 g(1)中断子程序结束之后,即第22行之后,程序转向哪里?第几行?
6 Q& t3 b- O# Y8 q5 b' Z(2)整个中断子程序的执行时间是不是由第20和第21行决定的?系统自动根据这两行决定子程序执行时间吗?如果将这两行删除之后,中断子程序的执行时间又是怎样决定的呢?7 Q1 r) p  a3 j" V# D: v/ x
(3)其中第七行程序是在什么时候开始执行的?; s7 c2 G$ {: t, u  ~% M5 b
(4)程序执行路线是不是这样的:1---2---(8,9...16)---4---5---(18....22 )           22之后呢??????
2 S' |3 |$ r2 ^' F. b% d  B       在下先行谢过各位,还请各位不吝指教,谢谢 :P :P :P
9 ^9 o) N  T9 n& s/ r8 ]8 \  L: `3 `% [$MOD51                                 -------------1* P# e; F; @3 v/ K
                 ORG   0000H         -------------2
3 m4 j/ |/ G- s+ d                 LJMP  START        -------------3
8 M  o' ~' i1 M2 y: ]3 z                 ORG   000BH         -------------46 T+ b, [1 M8 ^$ C  ]% j
                  LJMP  TO_ISR       -------------5( `$ c. m4 m  y1 D1 d! {
;                                               -------------6! K; k, \$ s: o* z$ g
                  ORG   0030H         -------------7
1 M& k! u1 Q9 B# F" ]1 b7 [! @! |# |# s$ GSTART:     SETB  P1.0             -------------8, N% `/ S$ D# y+ n, C, n
                  MOV   TMOD,#11H -------------9( J  {4 J$ D) D# x  w; Q! Z
                  MOV   TH0,#0DBH -------------10
8 T* y+ z) Y' v+ ]" {9 }. s) D3 I( q                  MOV   TL0,#0FFH  -------------11' d: ~. Y* D5 s( M# V+ H& F1 \) w
                  CLR   TF0              -------------12
: d. T7 e$ a( O3 ~                  SETB  TR0             -------------13
. G6 w- R2 D1 j" b                  SETB  ET0              -------------147 y# F* M# G9 w+ J
                  SETB  EA                -------------150 ]3 ]$ W' q5 C* G0 D& @# U( Z
LOOP:       SJMP  LOOP      -----------------16
: C3 V( Q1 L+ @. {% ]3 c2 \;                                                -------------17
! N/ j7 x  n( C# @& [5 q6 y3 u$ uTO_ISR:     CPL   P1.0             -------------18
( W4 `2 [7 z" Y# `+ X7 j9 o                   CLR   TF0             -------------19
$ b/ e4 ~% ]- ^/ ~4 @                   MOV   TH0,#0DBH -------------20( _+ D  s5 O% `0 g/ u" h
                   MOV   TL0,#0FFH -------------21
4 A; N' h8 J/ V3 Q5 X                   RETI                      -------------224 s3 n8 ]( D$ z% O8 M
                   END                       -------------23
发表于 2007-10-31 20:36:07 | 显示全部楼层 来自: 中国上海
我来解答:
; u( w& O% p' z! k. D1。此问题提得好(对于初学者来说)!
- h4 V7 k! r+ v# H0 v7 ?" p2。问题1:“中断子程序结束之后……?”,就回到主程序一直重复执行“LOOP:
" D. F( @0 i2 f1 `, G4 Z1 WSJMP  LOOP
-----16这行。
' p2 q( m4 x. |* }3 z1 O( [& o3。问题2:“整个中断子程序的执行时间是不是由第20和第21行决定的?…….”。此提法有错 (不是中断子程序的执行时间!若是要求中断子程序的执行时间,则需计算一下“---18……---20行的所有指令执行时间总和即可!”),5 t8 F$ a% {# P) {# A4 d  k2 N
4。正确的提法为“定时器是不是由第20和第21行决定的?” 3 z3 z3 W+ b2 Q# ~
当启动主程序后,即执行“---9……---15行” 后就决定了定时器的延时特性并每当定时器到时后,在中断程序里需再次给定时器赋值,以达到10ms至要求。如“如果将这两行删除之后……”,则定时器到时后TH0 TL0将以最大的赋于#0FFH值并进行延时。这延时将大大超过10ms
& ]& G1 N4 R$ K) c1 B( `/ F9 j5。问题3:“其中第七行程序是在什么时候开始执行的?”实为第八行它是紧跟在第三行执行之后! # m' t4 f) V" o) F% C! m
6。问题4:“程序执行路线是不是这样的:……
# I8 s& b# g6 I6 g主程序的程序执行路线是:3---8---9……---15---16,以后一直重复执行---16
" [7 A/ G! a+ R$ I* b中断子程序的程序执行路线是(当有定时器中断信号时!):5---18---……---21---22
" A# N9 S1 g7 U1 S0 P
7。另需指出: ORG 是汇编指令中的伪指令,供编译之用,是不参与实际指令的执行!
8。希望我的解答能给楼主帮助。

! `) V7 v1 s+ C
# _' A8 }1 W" ^9 Q  ?: C) B[ 本帖最后由 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”
* W5 T% P% c2 \3 f1。看来你已有所领悟了,很是为你高兴!6 j( a2 J! c  M( X" S& `
2。再补充一点:每当定时器到时,转去执行中断子程序。在中断子程序中由于“CPL   P1.07 h; Q+ F% F5 q: C. C
--
-18的执行,使“P1.0的输出口状态取反一次,从而就形成“P1.0的输出口以每10ms
延时的方波输出。
1 B9 Y* r: p+ L& Q+ S" H% ]2 t3。期望你今后编程更顺利!
% W$ w/ j2 O) J8 N4 j$ f
; [% o! G  s; ^# X, o[ 本帖最后由 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 )

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