51单片机 C语言 如何实现中断调用

当正在执行第一个子程序的时候(如方式一的花样灯),在该程序还没有执行完毕的时候,按下第二个按键,就自动跳转到第二个子程序(方式二的花样灯),检测到第三个按键按下后又跳转到第三个子程序
最好有C语言的实例 语句后面加上//注释

你这个不是中断调用,只是一种模式选择。也就是按键1按下之后按照一种方式扫描显示灯,按键2按下之后按照另一种方式显示灯·············。很简单的。我习惯用switch case 结构,想想就解决了。追问

我是说子程序正在运行的时候啊,比如正在执行第一种流水灯(是一个while(1)死循环),怎么检测到第二个按键按下,挑战到第二个程序呢?

追答

那就是你程序结构的问题了,你的子函数做成功能的,面向对象的,这样你可以从外部传进去参数的啊,void fuc(char 11,char 22,````)在函数的代码中处理上述参数达到不同效果,这个功能函数你可以定时调用,或者事件触发。你说的功能也可可以的 借助if····break;结构实现 就是在while(1)中放入上述结构,如果有相应的事件就跳出本次循环。不建议用go to 语句。

那就是你程序结构的问题了,你的子函数做成功能的,面向对象的,这样你可以从外部传进去参数的啊,void fuc(char 11,char 22,````)在函数的代码中处理上述参数达到不同效果,这个功能函数你可以定时调用,或者事件触发。你说的功能也可可以的 借助if····break;结构实现 就是在while(1)中放入上述结构,如果有相应的事件就跳出本次循环。不建议用go to 语句。
还有你贴出的代码根本不可能通过编译,main好几个,你让编译器怎么看你········

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-05-12
#include<stc.h>
sbit d1=P2^0;
sbit p1=P2^1;
void main()
{
方式一;
}
void main()
{ EA=1;
EX0=1;
IT0=1;
方式二;
}
void main()
{ EA=1;
EX1=1;
IT0=1;
方式三;
}
void zd0() interrupt 0
{
d1=0;
}
void zd1() interrupt 1
{
p1=0;
}
用的是外部中断0和1,程序很简单,注释就不写了。如果有错误的话,还请指正。本回答被网友采纳
第2个回答  2013-05-04
在你程序里设置个检测条件,检测到按键后就无条件跳转就ok了
第3个回答  2021-06-02
多线程了解一下
自行百度thread库
相似回答