QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

[讨论结束] 51定时中断

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

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

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

x
请教各位,以下是一段51的普通定时中断程序,该程序产生一个10ms方波信号,由P1.0端输出。我有几个关于中断的问题不是很清楚,烦请各位指教:* y. ]2 K2 _1 D: F1 h, w
(1)中断子程序结束之后,即第22行之后,程序转向哪里?第几行?* {/ B5 e/ y0 s' \7 E
(2)整个中断子程序的执行时间是不是由第20和第21行决定的?系统自动根据这两行决定子程序执行时间吗?如果将这两行删除之后,中断子程序的执行时间又是怎样决定的呢?. X- x" w7 _5 o  d- d$ {
(3)其中第七行程序是在什么时候开始执行的?
# u4 ?) s# @2 J: \(4)程序执行路线是不是这样的:1---2---(8,9...16)---4---5---(18....22 )           22之后呢??????
" N# {4 F3 g3 C- L       在下先行谢过各位,还请各位不吝指教,谢谢 :P :P :P ( ^% m0 f/ h, w* p3 v' N
$MOD51                                 -------------1
- p/ q) ]* t* U5 D0 ?) {                 ORG   0000H         -------------2
, `2 s! I7 P- ?0 Y* c1 k" |; t                 LJMP  START        -------------3! Y9 ^: \5 ]' E7 ?; C
                 ORG   000BH         -------------4% w9 }! N7 w8 E; T+ t) E* ?
                  LJMP  TO_ISR       -------------58 c5 v1 I) ^& v2 N) g% f9 v
;                                               -------------62 ?1 R* k1 z# J  s- ]4 ?7 M
                  ORG   0030H         -------------7  m3 c; X& X$ E$ _6 ]  E" d
START:     SETB  P1.0             -------------82 Q( }4 B  [, G) K
                  MOV   TMOD,#11H -------------9; }5 q5 G; f* s  w1 G3 H  I) y
                  MOV   TH0,#0DBH -------------10! @- j- r$ }1 r0 M# H
                  MOV   TL0,#0FFH  -------------11
" |# v: E4 K8 l, p7 {3 Y1 l                  CLR   TF0              -------------12
/ A- j& W" J9 Y9 l) {: C' _3 f" H                  SETB  TR0             -------------13" x! K5 T% `  H# C& `9 ?5 V
                  SETB  ET0              -------------14
6 @& J" R1 `# Q( l/ ?5 k: P1 p                  SETB  EA                -------------15
8 ^% [' \& p- D* v' wLOOP:       SJMP  LOOP      -----------------162 X  J3 ?$ D& H* A( b9 s6 M4 a
;                                                -------------17( c* |1 b+ ~! Y5 k
TO_ISR:     CPL   P1.0             -------------18
3 {  K2 y- ]( P) ^                   CLR   TF0             -------------19
+ F2 o. U# B4 K; l6 }                   MOV   TH0,#0DBH -------------20% [: h  [. B1 ^6 a9 S* v
                   MOV   TL0,#0FFH -------------21
( B  Z, e0 w* W) ~                   RETI                      -------------22
8 U9 h" X$ ?4 i7 E0 [                   END                       -------------23
发表于 2007-10-31 20:36:07 | 显示全部楼层 来自: 中国上海
我来解答:
+ W  e( v, O$ K/ g* ?1。此问题提得好(对于初学者来说)!6 d8 N1 j$ @% d- b' t
2。问题1:“中断子程序结束之后……?”,就回到主程序一直重复执行“LOOP: + k# u8 G2 t, x- z6 @4 x2 r
SJMP  LOOP
-----16这行。
7 N: Z* l" y3 H; d3。问题2:“整个中断子程序的执行时间是不是由第20和第21行决定的?…….”。此提法有错 (不是中断子程序的执行时间!若是要求中断子程序的执行时间,则需计算一下“---18……---20行的所有指令执行时间总和即可!”),
: U) ~9 b/ H# r: T9 t4。正确的提法为“定时器是不是由第20和第21行决定的?” & Q- @0 o% O% Y: A. {
当启动主程序后,即执行“---9……---15行” 后就决定了定时器的延时特性并每当定时器到时后,在中断程序里需再次给定时器赋值,以达到10ms至要求。如“如果将这两行删除之后……”,则定时器到时后TH0 TL0将以最大的赋于#0FFH值并进行延时。这延时将大大超过10ms4 D& G$ ?7 Z/ \3 K1 }4 K( {+ @# ?! t" K
5。问题3:“其中第七行程序是在什么时候开始执行的?”实为第八行它是紧跟在第三行执行之后!
: l8 w" u& `' ~; i. n) \& R9 k6。问题4:“程序执行路线是不是这样的:……
3 N1 F( a# B* b主程序的程序执行路线是:3---8---9……---15---16,以后一直重复执行---16
! O; w: t+ W# Q. t中断子程序的程序执行路线是(当有定时器中断信号时!):5---18---……---21---22
  Q& a# L+ M5 x  I
7。另需指出: ORG 是汇编指令中的伪指令,供编译之用,是不参与实际指令的执行!
8。希望我的解答能给楼主帮助。

1 A+ g$ c* R5 R3 V9 X; C  Z6 V  x
" E0 s- m7 O6 b/ S- G8 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”
6 w0 e+ }2 e1 _: r7 D5 _: M1。看来你已有所领悟了,很是为你高兴!
* [. Q7 a6 J2 N8 w$ j2。再补充一点:每当定时器到时,转去执行中断子程序。在中断子程序中由于“CPL   P1.0* B& D( p0 T# N; ^$ P" ^! `
--
-18的执行,使“P1.0的输出口状态取反一次,从而就形成“P1.0的输出口以每10ms
延时的方波输出。5 K/ m: \) k7 v0 f2 U6 L
3。期望你今后编程更顺利!
0 u& W2 n) b$ v% [, O8 S3 n$ G3 ^7 m, I. r  V( s8 s( [
[ 本帖最后由 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 )

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