微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 单片机中断使用goto语句

单片机中断使用goto语句

时间:10-02 整理:3721RD 点击:
最近在做一个mp6遇到一些问题。就是在用按键触发外部中断实现上下一曲
见我的程序结构如下
main()
{
        while(1)
        {
                loop:
                opengile(,,n);   //打开文件
                readfile();      //读取文件
               n++;
        }
       
}
interupt()
{
        if(...)
                n++;
        goto loop;
}

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


请问一下大神们 这个该怎么解决  或者有其他的方法可以跳转的
因为redfile函数是连续执行的,我无法通过标志位来判断进行break循环 只能在中断里进行跳转

额 mp3  打错了!

可以设置一个变量A=1;
=================
redfile 方法里判断
if (A=1)
{
  读取文件
}
=================
在中断函数里写
A=0;

++++++++++++++++++++++++
你的 opengile   方法名写错了  应该是 openfile

goto只能跳转到同一个函数的label处,不能跳转到其它函数,如果硬要跳转的话,估计只能用汇编了

不要随意使用goto语句。有人觉得goto语句只是相当于汇编的JUMP而随意使用,结果导致程序经常出错跑飞,而且排错也非常困难。
对于你的情况,我不知道你的readfile()函数是怎么写的。在我做的MP3中,所有按键识别如上下曲、音量加减均播放函数里嵌入,完全不会影响播放效果。顺便说一下我的MP3硬件配置:STC12LE5A60S2,30.00MHz晶振,VS1003B模块,12846OLED,中文字库芯片,DS1302。完美播放320码率MP3

只要加标志位就行了,
然后在程序里面多加一些判断就可以了

good:lol

上一篇:stm32f103和max31855,求助
下一篇:TIM1_BKIN

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top