QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

[讨论结束] 51定时中断

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

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

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

x
请教各位,以下是一段51的普通定时中断程序,该程序产生一个10ms方波信号,由P1.0端输出。我有几个关于中断的问题不是很清楚,烦请各位指教:3 C3 Z& N2 I$ A4 V6 C
(1)中断子程序结束之后,即第22行之后,程序转向哪里?第几行?) M1 V, g7 E* A" F2 X# E6 R
(2)整个中断子程序的执行时间是不是由第20和第21行决定的?系统自动根据这两行决定子程序执行时间吗?如果将这两行删除之后,中断子程序的执行时间又是怎样决定的呢?
3 @( I5 E7 r0 h(3)其中第七行程序是在什么时候开始执行的?. z0 d" @: v* \7 Q( E
(4)程序执行路线是不是这样的:1---2---(8,9...16)---4---5---(18....22 )           22之后呢??????
" z0 ~8 B/ z# E5 p& s8 h9 e, I- _       在下先行谢过各位,还请各位不吝指教,谢谢 :P :P :P
4 j4 a/ H' [8 F) c$MOD51                                 -------------1
) ?  ^# @- C+ J3 H, K% K3 j                 ORG   0000H         -------------2. v2 F' j7 R: @+ {
                 LJMP  START        -------------3
! K* P& e4 \* [3 i; Q6 p2 M, s9 c7 O' S                 ORG   000BH         -------------4
% X8 z% v6 _% a. E                  LJMP  TO_ISR       -------------5
% u0 L* u* {$ ]* h; N, I- i;                                               -------------6
+ c: X2 z# {- G3 A; X) ~                  ORG   0030H         -------------7  t/ ]' H2 A" c: S  N& @
START:     SETB  P1.0             -------------8
6 d+ c  I: a! {% Z1 }! h) r( A9 d                  MOV   TMOD,#11H -------------9
$ f8 N# o. L( J+ L                  MOV   TH0,#0DBH -------------10
, h8 f8 M" G  D$ _! K                  MOV   TL0,#0FFH  -------------11* f9 a9 Q2 W/ {1 Q5 O
                  CLR   TF0              -------------12% t4 x2 C. l; G& A4 N7 a
                  SETB  TR0             -------------13
7 |$ F* b4 _5 B- f, n( C                  SETB  ET0              -------------14' l4 n9 `4 D8 {! k& F% l2 g2 B8 K
                  SETB  EA                -------------15
. L7 \3 a# J, V  n; Z8 p6 XLOOP:       SJMP  LOOP      -----------------16
* j3 P8 A& W# S7 l5 p$ I( ]5 k! Q' l# M;                                                -------------17
/ \8 ^# |: m# J1 K  b. C# rTO_ISR:     CPL   P1.0             -------------18
( I0 L7 i3 y% |8 @/ ?8 H4 C6 t! X                   CLR   TF0             -------------19* B4 a- _* y5 g9 S- l
                   MOV   TH0,#0DBH -------------208 ]( n0 ~5 m) W/ y' G4 s  i
                   MOV   TL0,#0FFH -------------21; |! Q; N4 f* ~: n$ a: A
                   RETI                      -------------22
8 I( d: n. C! `6 e' @                   END                       -------------23
发表于 2007-10-31 20:36:07 | 显示全部楼层 来自: 中国上海
我来解答:
- J& ?, V- y+ V8 [: ?! b$ c1。此问题提得好(对于初学者来说)!
# n' b2 y$ h' P4 J8 Q: s+ V2。问题1:“中断子程序结束之后……?”,就回到主程序一直重复执行“LOOP:
* S( L8 F/ }- \+ ]( ySJMP  LOOP
-----16这行。
6 y5 J8 O6 j1 t% v3。问题2:“整个中断子程序的执行时间是不是由第20和第21行决定的?…….”。此提法有错 (不是中断子程序的执行时间!若是要求中断子程序的执行时间,则需计算一下“---18……---20行的所有指令执行时间总和即可!”),
9 y! T1 a1 g0 J1 _2 D& A4。正确的提法为“定时器是不是由第20和第21行决定的?”
+ V! P8 Z% K: v, a% L当启动主程序后,即执行“---9……---15行” 后就决定了定时器的延时特性并每当定时器到时后,在中断程序里需再次给定时器赋值,以达到10ms至要求。如“如果将这两行删除之后……”,则定时器到时后TH0 TL0将以最大的赋于#0FFH值并进行延时。这延时将大大超过10ms3 S' i. K5 Z: Y1 ]
5。问题3:“其中第七行程序是在什么时候开始执行的?”实为第八行它是紧跟在第三行执行之后! * M% c' `8 F7 k* b6 _
6。问题4:“程序执行路线是不是这样的:……% k' }& c/ x2 p4 R! q6 z7 }8 a0 a1 v
主程序的程序执行路线是:3---8---9……---15---16,以后一直重复执行---161 o4 U' S9 ], [  d9 W
中断子程序的程序执行路线是(当有定时器中断信号时!):5---18---……---21---22. q( `7 Y4 h3 z! H5 n1 A$ P, t+ n% a
7。另需指出: ORG 是汇编指令中的伪指令,供编译之用,是不参与实际指令的执行!
8。希望我的解答能给楼主帮助。

5 I8 L1 g0 r# ^  B- N2 C7 P& ?- e' h8 @2 k1 v# i' X4 ~
[ 本帖最后由 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”
3 ]& y: P. W# I, w! q1 t1。看来你已有所领悟了,很是为你高兴!
$ ^8 Q/ H, e9 s$ Q/ C5 X0 ~2。再补充一点:每当定时器到时,转去执行中断子程序。在中断子程序中由于“CPL   P1.0
8 V+ v, ]" Y/ o--
-18的执行,使“P1.0的输出口状态取反一次,从而就形成“P1.0的输出口以每10ms
延时的方波输出。' s, p1 {- Z+ s9 g% s
3。期望你今后编程更顺利! 3 o  [( e+ F8 I# S0 H* t! E/ a. c

1 @, m5 g# g* ~6 f[ 本帖最后由 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 )

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