打印
[AVR单片机]

求助:中断中的变量怎么没传到主函数

[复制链接]
6596|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
5_0_5|  楼主 | 2007-8-5 09:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本人针对MAGE88用C编了个小程序:
    程序由定时中断(T0中断)和主函数构成,在头函数后定义了全局变量:int a01;
    中断函数中只有一句话:a01++;
    主函数中开中断(中断测试确认过已经打开)和初始化后程序为:
     while(1)
        {
          for(a01=0;a01>10;)
             {
               PORTB=0;   //PORTB初始化设置为输出,外接一发光LED,
                          //低电平驱动。
             }
         }
程序运行后无输出,也就是说中断中a01的数值变化没有传到主函数中,请问为什么?
是不是a01定义有问题?中断和主函数中用的不是一个地址空间?

相关帖子

沙发
computer00| | 2007-8-5 10:59 | 只看该作者

试试volatile

使用特权

评论回复
板凳
5_0_5|  楼主 | 2007-8-5 11:08 | 只看该作者

路过的给指条路啊?

使用特权

评论回复
地板
5_0_5|  楼主 | 2007-8-5 11:13 | 只看该作者

谢谢,computer00

今天主要是求各位指条路,明天上班试一试了!嗨没电脑的悲哀啊!

再次谢谢computer00

使用特权

评论回复
5
xwj| | 2007-8-5 11:16 | 只看该作者

有人指过了啊

另外;
只有定义在所有函数外的才是全局变量,
main()里定义的也是局部变量,别人是访问不到的,只不过生存时间场点罢了

使用特权

评论回复
6
5_0_5|  楼主 | 2007-8-5 11:17 | 只看该作者

对了,我用的是WINAVR,

不知道是不是编译器是不是有什么特殊的要求。我明天再调试调试。

使用特权

评论回复
7
5_0_5|  楼主 | 2007-8-5 11:22 | 只看该作者

我是定义在函数外的,

头文件的后面:int a01;

使用特权

评论回复
8
xwj| | 2007-8-5 11:27 | 只看该作者

一个基本原则:头文件中 不应该 包含任何会产生段分配的语

使用特权

评论回复
9
5_0_5|  楼主 | 2007-8-5 11:30 | 只看该作者

请xwj说清楚点

我刚刚接触C和AVR

使用特权

评论回复
10
5_0_5|  楼主 | 2007-8-5 11:31 | 只看该作者

段分配的语句 是怎么样子的

使用特权

评论回复
11
xwj| | 2007-8-5 11:35 | 只看该作者

就是任何会产生代码、变量等占用了存储器的语句啊

使用特权

评论回复
12
5_0_5|  楼主 | 2007-8-5 11:37 | 只看该作者

我有一个指针变量,存储数码管显示代码

我有一个指针变量,存储数码管显示代码的,这个算不算

使用特权

评论回复
13
5_0_5|  楼主 | 2007-8-5 11:39 | 只看该作者

xwj可以留个油箱给我么

使用特权

评论回复
14
5_0_5|  楼主 | 2007-8-5 11:44 | 只看该作者

OK

xwj我已经看过你的资料,我明天如果有什么问题在麻烦你帮忙好么?先说声谢谢了!!!

使用特权

评论回复
15
taoest| | 2007-8-6 18:05 | 只看该作者

for(a01=0;a01>10;)

改成
a01=0;
while(a01<=10);
PORTB=0; 

使用特权

评论回复
16
5_0_5|  楼主 | 2007-8-7 09:00 | 只看该作者

顺便问一问各位高手:面对一个新的编译器,应该怎么去学

我想知道从哪里入手

使用特权

评论回复
17
computer00| | 2007-8-7 09:12 | 只看该作者

看菜单里面的help......

使用特权

评论回复
18
5_0_5|  楼主 | 2007-8-7 09:25 | 只看该作者

help到是好教材

但是我的英语不是很好^

看来学什么都没有捷径啊

使用特权

评论回复
19
5_0_5|  楼主 | 2007-8-7 15:32 | 只看该作者

终于想通要问什么了?

是不是中断函数和主函数的公用同一个变量的时候,该变量都要用volatile来定义,但是,主函数中的全局变量就不必要用volatile定义,是不是?

使用特权

评论回复
20
5_0_5|  楼主 | 2007-8-7 15:46 | 只看该作者

这个好象跟编译器有关,对吧?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

402

帖子

2

粉丝