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库

C语言中,51单片机怎么将进入外部中断服务程序,
在进行51单片机的外部中断初始化时,我们首先需要开启中断源。对于外部中断0来说,需要执行"EX0 = 1",以开启中断功能。此外,我们还需要设置中断触发方式。若是外部中断,应将IT0值设为1,即设置为边沿触发方式,具体代码为"IT0 = 1"。为了确保中断系统正常工作,我们还需要开启总中断,通过设置"EA ...

C语言中断怎么调用??
单片机C语言中断:include<reg51.h> sbit P10=P1^0;\/\/LED void main(){ EA = 1; \/\/允许CPU中断 ET0 = 1; \/\/定时器0中断打开 TMOD = 0x1; \/\/设定时器0为模式1,16位模式 TH0=0xB1;TL0=0xDF; \/\/设定时值为20000us(20ms)TR0 = 1;while(1){} } \/\/定时器0中断...

51单片机如何用一个按键控制一段程序的运行与停止
首先,你需要为你的项目创建一个新的文件,这是基础步骤,它将承载你的代码逻辑(1、在51单片机项目中,新建一个文件用于存放程序代码。)。接着,配置你的按键和LED。假设你选择的按键S1连接到P3的第2引脚,当按键按下时,可以通过编程使其对应P1的第5引脚点亮LED(2、按键S1的输入设置为P3^2,LED...

C语言中,用于设置中断、中断信号的函数有哪些?怎么设置一个发送中断信...
C51单片机的中断使用时,主要是通过中断服务号来决定的。如你定义一个中断服务函数:void KEY(void) intterrupt 0 { } 当外部中断0申请中断时 会自动根据interrupt后面的0,找到上面定义的这个中断服务函数。对于其他四个中断源,其对应的中断号分别为1、2 、3、4 ...

求89C51单片机简单中断程序,用C语言编写,题目如图
include<reg51.h>#include "intrins.h"#include "absacc.h"#define uchar unsigned charuchar ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0xff};\/\/0-9uchar num,cnt;bit flag=0;void ext1() interrupt 2{flag=~flag;}void t1isr() interrupt 3\/\/显示{...

C语言51单片机中断嵌套问题
因为这是硬件决定的,软件做不到,即便你在高级中断A中关闭了中断B,但是因为你原来的中断B还没有执行完,所以,仍然要把没执行完的部分执行下去,才能返回到正常程序.对于ARM系列的可以,对于51来说,是不行的,因为51软件指令不允许修改PC寄存器的值 ...

51单片机c语言编程中产生中断的条件是什么
1.总中断使能位EA=1 2.相应中断使能 (ET0、EX0……) 打开 3.中断源:外部中断引脚的电平触发、定时器溢出……oid PxInt0(void) interrupt 0 \/\/定义外部中断0 void PxInt1(void) interrupt 2 \/\/定义外部中断1 void time0_int(void) interrupt 1 \/\/定义定时器0 void time1_i...

求单片机(c51)外部中断实验的c语言代码或者思路,要求在补充
include<reg51.h>#define uchar unsigned charvoid delay(void){uchar i,j;for(i=0;i<200;i++)for(j=0;j<120;j++);}void ext0() interrupt 0{uchar i;for(i=0;i<8;i++) { P2=0x00; delay(); P2=0xff; delay(); }}main(){uchar i;EX0=1;IT0=1;EA...

51单片机定时中断C语言的写法步骤,可追加分数
程序说明:51单片机定时器0工作于方式一,定时50ms中断一次 晶振为12M include<reg52.h> void main { TOMD = 0X01;\/\/配置定时器0工作于方式一 TH1 = (65536-50000)\/256; \/\/高八位装入初值 TL1 = (65536-50000)%256; \/\/低八位装入初值 ET0 = 1;\/\/开定时器0中断 EA = 1;...

51单片机如何用一个按键控制一段程序的运行与停止
1、创建项目文件。2、按键:S1=P3^2,点亮: led=P1^5。3、创建C语言主函数。4、创建循环效果,检测效果。while(1) {}。5、选择输出的效果。6、当按下一个按键时,关闭灯,整个程序运行,再按一次,程序停止。

相似回答