单片机C语言中的全局变量和中断问题,大神进
是这样,我想定义一个变量chara;.然后在主函数里把a的值改变,比如a='A'.要a的值在中断和其他自定义函数里能使用。我该怎么弄。大神帮忙解答下,谢谢了...
是这样,我想定义一个变量char a;.然后在主函数里把a的值改变,比如a='A'. 要a的值在中断和其他自定义函数里能使用。我该怎么弄。大神帮忙解答下,谢谢了
展开
2个回答
推荐于2018-02-20
展开全部
简单点:在需要使用a的文件里面,在最前面加一行:
extern char a;
在那个文件里面就可以直接用了。
如果多个文件会用到,就多个文件都写这么一行。
也可以了解一下头文件。
新建main.h, 内容如下:
#ifndef _MAIN_H_
#define _MAIN_H_
extern char a;
#endif _MAIN_H_
之后在需要用到a变量的文件内在最前面
#include "main.h"
extern char a;
在那个文件里面就可以直接用了。
如果多个文件会用到,就多个文件都写这么一行。
也可以了解一下头文件。
新建main.h, 内容如下:
#ifndef _MAIN_H_
#define _MAIN_H_
extern char a;
#endif _MAIN_H_
之后在需要用到a变量的文件内在最前面
#include "main.h"
追问
大神,这个我看不懂。再请教一下,百度看到 volatile char a ; 这个volatile 使用后能达到我需要的效果吗?
追答
volatile 不能实现你的要求。
如果你在同一个源文件内使用这个变量a你不需要做任何事情,如果在别的源文件内使用的话就需要加一行 extern char a;
引用teddy_0416的回答:
简单点:在需要使用a的文件里面,在最前面加一行:
extern char a;
在那个文件里面就可以直接用了。
如果多个文件会用到,就多个文件都写这么一行。
也可以了解一下头文件。
新建main.h, 内容如下:
#ifndef _MAIN_H_
#define _MAIN_H_
extern char a;
#endif _MAIN_H_
之后在需要用到a变量的文件内在最前面
#include "main.h"
简单点:在需要使用a的文件里面,在最前面加一行:
extern char a;
在那个文件里面就可以直接用了。
如果多个文件会用到,就多个文件都写这么一行。
也可以了解一下头文件。
新建main.h, 内容如下:
#ifndef _MAIN_H_
#define _MAIN_H_
extern char a;
#endif _MAIN_H_
之后在需要用到a变量的文件内在最前面
#include "main.h"
展开全部
用volatile是不能防止中断和main中同时操作所导致错误的情况的,他只是告诉编译器,不要优化,比我我在main中写,中断中读,是有可能读到错误的,举个例子,51单片机操作一个unsigned int需要两条汇编,如果恰巧,只执行了一条就被中断,那么就会导致中断中读取错误,同理,如果我main正在读,只执行了一半,这个时候中断来了,那么就会导致main中读错误。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询