单片机中断使用goto语句

2019-07-15 19:22发布

最近在做一个mp6遇到一些问题。就是在用按键触发外部中断实现上下一曲

见我的程序结构如下
main()
{
        while(1)
        {
                loop:
                opengile(,,n);   //打开文件
                readfile();      //读取文件
               n++;
        }
       
}
interupt()
{
        if(...)
                n++;
        goto loop;
}


n为mp3文件的序号
文件在被读取的时候 是连续的,也就是这个程序会执行很久
就是想在按键按下后 就在中断里把n加一  然后跳转到打开文件的函数那儿 进行打开下一个文件
理论上 这样是很完美的。可是我这样做 程序就出错了
看下面错误提示
`{WY{}2KU2FV)PDNLC1A4O9.jpg

请问一下大神们 这个该怎么解决  或者有其他的方法可以跳转的
因为redfile函数是连续执行的,我无法通过标志位来判断进行break循环 只能在中断里进行跳转
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
www23152
1楼-- · 2019-07-16 01:21
额 mp3  打错了!!!
happie1238
2楼-- · 2019-07-16 02:17
可以设置一个变量A=1;
=================
redfile 方法里判断
if (A=1)
{
  读取文件
}

=================
在中断函数里写
A=0;



++++++++++++++++++++++++
你的 opengile   方法名写错了  应该是 openfile
kaixiang54
3楼-- · 2019-07-16 06:57
goto只能跳转到同一个函数的label处,不能跳转到其它函数,如果硬要跳转的话,估计只能用汇编了
ntmusic
4楼-- · 2019-07-16 07:44
 精彩回答 2  元偷偷看……
阿信509
5楼-- · 2019-07-16 08:32
只要加标志位就行了,
然后在程序里面多加一些判断就可以了

第二心音
6楼-- · 2019-07-16 14:23
good:lol

一周热门 更多>