EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
这次说定时与中断,有人说,掌握了定时与中断,就掌握了一个 单片机80%的功能;也有人说,中断是一个单片机的灵魂。这两句话无一不在强调中断的重要性,就让我们认识一下,中断到底是什么。 根据百度百科的定义:指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。即在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个新的情况的过程就叫做中断。 举个例子,我正在吃饭呢,忽然老婆大人发话了,说在网上看上一个包,挺好的,让我帮着付款,于是我停下吃饭说好,去帮着付款,付完款,继续吃饭。 这个过程中,我是CPU;吃饭是主程序;老婆大人说话,触发了中断;我说好,安慰了老婆的情绪同时清零了中断标志;去付款,处理了中断子程序;付完款继续吃饭,回到了主程序。 STC89C52RC单片机中的中断分为三种:外部中断,一般是IO口的高低电平触发;定时/计数器溢出中断,一般是内部定时/计数器溢出中断;UART口中断,收发数据时引发的中断。这次只说定时/计数器溢出中断。 程序如下:
' p% z! L& B, h5 Z/**********************51单片机学习例程***********************
0 P' w5 V7 w. z. J+ V+ s* 平台:Keil U4 + STC89C529 ~" Z$ u5 `; ]2 W( ^
* 名称 ED闪烁
9 n; S1 V' m; Z. A1 ^! C% T' i* 晶体:11.0592MHZ+ r/ j: M6 Y# p5 M! E+ g
******************************************************************/; L* u0 O* G; h9 w+ o. q4 [
#include <reg52.h>0 R( w4 f6 }, Y' X
* `) r" A7 Q5 c% c6 |% L- _2 e
sbit led=P1^0;
; K: u$ c6 k" i- h+ p
1 r7 G/ Q3 S7 m( A8 j3 h* L; ^& }1 q6 Q/ ^
/****************************************************
2 Z: _5 y, y, q; }0 B: v*
0 b1 O, L/ m5 o" o3 V- ~* 延时子函数
( r2 x9 D1 Z( q*: B ~+ a# a- u6 W. e3 M
*****************************************************/1 P7 J7 Z1 [, c
void delay(unsigned int i)4 O1 b6 h& E! V7 I% l& n* v
{3 _0 a! ^! @6 U* k* q0 P
unsigned int j;
4 c1 E3 L1 |: `: _" J! C! m unsigned char k;& M. s9 _1 t8 X* h% P. T+ h* u8 F
for(j=i;j>0;j--) //把i赋值给j,然后进行判断,当j大于0时,j减一,重复判断,一直到符合条件为止" Y1 n. B/ f3 @
for(k=125;k>0;k--); //首先赋值125给k,然后进行判断,当k大于0时,k减一,重复判断,一直到符合条件为止4 H! [/ }0 j6 i# V. N
}# N% |& o- A' N
& i a) C5 \; R) L) b4 D7 M: T0 S
/****************************************************9 o; J3 q Y5 C' W" C
*; r3 L, v5 {3 V' E) J4 W; k
* 主函数,在死循环中实现LED闪烁7 o, l* v- \& F8 t
*/ s0 j: z0 U7 s+ o
*****************************************************/$ L4 U2 |0 A) }- W- G) ^
int main()
" o* j( a8 c+ s* b: z7 O{) w+ ?- T: i7 B
while(1)
* q! ?9 G6 o$ D, @6 K {
0 ~$ b6 |5 i% D led=~led; //每隔一段时间即对输出取反。& m8 e: D" s5 K3 @
delay(3000); //闪烁间隔。间隔约为0.85S
% Q; m, x( Z, X* D# w }4 M e/ |9 n2 c" S: \' j
return(0);; D8 {' d e( n( p
}
& Y5 R% G2 X+ ?! j9 w/ y
" u; O9 t" o3 V: I( G4 }# o9 `4 A- j% I
|