EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
这次说定时与中断,有人说,掌握了定时与中断,就掌握了一个 单片机80%的功能;也有人说,中断是一个单片机的灵魂。这两句话无一不在强调中断的重要性,就让我们认识一下,中断到底是什么。 根据百度百科的定义:指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。即在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个新的情况的过程就叫做中断。 举个例子,我正在吃饭呢,忽然老婆大人发话了,说在网上看上一个包,挺好的,让我帮着付款,于是我停下吃饭说好,去帮着付款,付完款,继续吃饭。 这个过程中,我是CPU;吃饭是主程序;老婆大人说话,触发了中断;我说好,安慰了老婆的情绪同时清零了中断标志;去付款,处理了中断子程序;付完款继续吃饭,回到了主程序。 STC89C52RC单片机中的中断分为三种:外部中断,一般是IO口的高低电平触发;定时/计数器溢出中断,一般是内部定时/计数器溢出中断;UART口中断,收发数据时引发的中断。这次只说定时/计数器溢出中断。 程序如下: 6 h% p# a3 z3 Y5 [/ P
/**********************51单片机学习例程***********************
. m$ I$ u! O/ i6 M: A* 平台:Keil U4 + STC89C52
7 X) E6 d4 q& W) h8 z# k5 i& m- K) i* 名称ED闪烁% p0 R2 h! p2 x# g
* 晶体:11.0592MHZ$ R8 y- X% T, \0 r H
******************************************************************/- E" T) h& c* W% g1 Y+ Z
#include <reg52.h>) F {* U, }: C( E# |, _4 F% G8 P
3 n1 \+ t8 g3 g" U
sbit led=P1^0;
7 l4 s7 G# Q2 c# Q6 b9 Y" `
) @5 j/ \9 w W) Y- y2 d- ]& D% a. r& B# C2 h0 Q
/****************************************************
: R: B% F% H2 b$ ~' P+ k1 K*; g7 R! l* g+ E# S. V" g
* 延时子函数
, w" s# X% d d3 G. K! w*
+ {5 M0 h, o$ ?7 a*****************************************************/
# ^6 [4 d+ Y( h5 s/ ?0 l6 \ _3 h6 b9 yvoid delay(unsigned int i)
, X0 ?0 ?1 r4 U- ~- m- R{9 [# [! W: B$ {' T! o$ e* _
unsigned int j;
" k; Z0 V+ P2 A unsigned char k;
+ x- n e2 Z# c for(j=i;j>0;j--) //把i赋值给j,然后进行判断,当j大于0时,j减一,重复判断,一直到符合条件为止& N5 @* `% Z% G
for(k=125;k>0;k--); //首先赋值125给k,然后进行判断,当k大于0时,k减一,重复判断,一直到符合条件为止! D6 o+ i6 G1 F* z' |, C
}3 K) @. }% w( R, ^
) i+ _9 ]5 D7 d, K, E8 d; j1 J9 ^8 @
" u, R4 [4 S5 Y3 x! ]/****************************************************
6 z* F3 M) G2 X* O, C*, t& {% X4 n V% ?9 ~$ A
* 主函数,在死循环中实现LED闪烁
5 l- q+ C' F/ B7 q. {* F/ s' i, r2 f3 z3 d6 }* V; t: ]8 j
*****************************************************/: E8 H4 X4 ?" [# n) A2 V
int main()
) ~2 c3 ~' T$ v& E% X& B8 e1 C1 t y{# D: P' J2 u* r
while(1)/ ^( ]( B4 i: E+ [4 f
{ Y' F! v- j5 k8 z
led=~led; //每隔一段时间即对输出取反。5 s( S4 [! Z9 }/ d
delay(3000); //闪烁间隔。间隔约为0.85S+ ?8 R7 l% A8 u, Y. L o* l
}: P0 Y' m) V, ?1 N: y+ M0 a
return(0);
3 C% [8 A- x6 [9 `# Q}
+ M; U& ^) i5 D2 {8 V
8 ~6 j: C' t& b" o, A
6 F( V1 O. @/ _: m6 ^; | |