用普通程序和中断方式分别实现LED灯翻转
来源:网络收集 点击: 时间:2024-03-03先来了解一下什么叫做中断吧。中断是指计算机在运行当前程序的过程中,若遇到紧急或突发事件,可以暂停当前程序的运行,转向处理该突发事件,处理完成后在从当前程序的间断处接着运行。
2/3那么中断过程与调用函数过程有哪些异同呢?
相似点:
1、两者都需要保护断点;
2、两者都可以实现多级嵌套。
不同点:
中断过程与调用一般函数过程从本质上讲是不同的,主要表现在服务时间和服务对象方面。
1、调用一般函数是程序设计者事先安排的,而调用中断函数过程是系统根据工作换进随机决定的;
2、调用一般函数在调用函数中的断点是明确的,而调用中断函数的断点是随机的;
3、主函数与调用一般函数之间是主从关系,而主函数与中断函数之间是平行关系;
4、一般函数调用时纯软件处理过程,而中断函数是软、硬件配合完成的过程。
3/3先将电路图画出来。

用调用一般函数的方式实现LED灯反转。
2/3编写程序代码:
#includereg51.h
sbit p10 = P1^0;
sbit p33 = P3^3;
void main(void){
while(1){
if(p33 == 0)
p10 = ! p10;
}
}
3/3将以上代码保存并生成hex文件,然后导入到80C51元器件中执行即可。切记,此时根据代码中的内容,发挥作用的是K2。
方法/步骤31/5用中断方式实现LED灯反转
2/5代码1(K1起作用):
#includereg51.h
sbit p10 = P1^0;
key1() interrupt 0{
p10 = ! p10;
}
void main(void){
IT0 = 1;
IE = 0x81;
while(1);
}
3/5代码2(K2起作用):
#includereg51.h
sbit p10 = P1^0;
key2() interrupt 2{
p10 = ! p10;
}
void main(void){
IT1 = 1;
IE = 0x84;
while(1);
}
4/5代码3(K1和K2均起作用):
#includereg51.h
sbit 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/5其中EA=1就相当于EA = 1;EX0 = 1;
或者EA = 1;EX1 = 1;
EA是中断允许总控制位,EX0是外部中断0中断允许位,EX1是外部中断1中断允许位。
注意事项外部中断0和外部中断1的标志位要搞清楚,不要弄错,否则不起作用。
版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.ff371.cn/art_226260.html