多语言展示
当前在线:1090今日阅读:167今日分享:16

用普通程序和中断方式分别实现LED灯翻转

现代计算机都具有实时处理能力,能对突然发生的事件进行处理。这是它的中断系统来实现的。顺便看一下普通的程序方式与中断处理有何不同。
工具/原料
1

proteus

2

keilc

方法/步骤
1

先来了解一下什么叫做中断吧。中断是指计算机在运行当前程序的过程中,若遇到紧急或突发事件,可以暂停当前程序的运行,转向处理该突发事件,处理完成后在从当前程序的间断处接着运行。

2

那么中断过程与调用函数过程有哪些异同呢?相似点:1、两者都需要保护断点;2、两者都可以实现多级嵌套。不同点:中断过程与调用一般函数过程从本质上讲是不同的,主要表现在服务时间和服务对象方面。1、调用一般函数是程序设计者事先安排的,而调用中断函数过程是系统根据工作换进随机决定的;2、调用一般函数在调用函数中的断点是明确的,而调用中断函数的断点是随机的;3、主函数与调用一般函数之间是主从关系,而主函数与中断函数之间是平行关系;4、一般函数调用时纯软件处理过程,而中断函数是软、硬件配合完成的过程。

3

先将电路图画出来。

方法/步骤2
1

用调用一般函数的方式实现LED灯反转。

2

编写程序代码:#includesbit p10 = P1^0;sbit p33 = P3^3;void main(void){ while(1){ if(p33 == 0) p10 = ! p10; }}

3

将以上代码保存并生成hex文件,然后导入到80C51元器件中执行即可。切记,此时根据代码中的内容,发挥作用的是K2。

方法/步骤3
1

用中断方式实现LED灯反转

2

代码1(K1起作用):#includesbit p10 = P1^0;key1() interrupt 0{ p10 = ! p10;}void main(void){ IT0 = 1; IE = 0x81; while(1);}

3

代码2(K2起作用):#includesbit p10 = P1^0;key2() interrupt 2{ p10 = ! p10;}void main(void){ IT1 = 1; IE = 0x84; while(1);}

4

代码3(K1和K2均起作用):#includesbit p10 = P1^0;key1() interrupt 0{ p10 = ! p10;}key2() interrupt 2{ p10 = ! p10;}void main(void){ IT0 = IT1 = EA = EX0 = EX1 = 1; while(1);}

5

其中EA=1就相当于EA  = 1;EX0 = 1;或者EA = 1;EX1 = 1;EA是中断允许总控制位,EX0是外部中断0中断允许位,EX1是外部中断1中断允许位。

注意事项

外部中断0和外部中断1的标志位要搞清楚,不要弄错,否则不起作用。

推荐信息