打印
[AVR单片机]

ICCAVR的全局变量怎么用?

[复制链接]
1781|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sanguanko|  楼主 | 2015-3-7 22:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <iom8v.h>
#include <macros.h>

extern unsigned char flag=0;

#pragma interrupt_handler int0_serve:2
int0_serve(void)
{
    CLI();
        flag=flag+1;
    putchar0(flag);
        if(flag==0x09) flag=0;
    SEI();        
}

int main(void)
{
    CLI();
        uart0_init();
        int0_init_H_to_L_edge();
        SEI();
        putchar0(flag);
        putchar0(0x55);
        while(flag==0x02)
          {
                  putchar0(0xaa);
          }        
                  
}
一上电串口会输出00和55,外中断是下降沿触发,按一次按键触发一次外中断,flag加1,当flag=0x02时,串口应该输出0xaa,但是没有,为什么?用的是ICCAVR V7.22编的。请指教,多谢。

相关帖子

沙发
yklstudent| | 2015-3-7 22:50 | 只看该作者
AVR GCC不用改ICC了???

使用特权

评论回复
板凳
sanguanko|  楼主 | 2015-3-7 23:25 | 只看该作者
是啊,上次相同的程序用avrstudio,不能进外中断,用ICCAVR就可以了,就接着用ICCAVR了

使用特权

评论回复
地板
sanguanko|  楼主 | 2015-3-7 23:26 | 只看该作者
yklstudent,有什么建议吗?谢谢

使用特权

评论回复
5
yklstudent| | 2015-3-7 23:29 | 只看该作者
别逗了,喜欢用哪个就用哪个
反正都能用,就看个人习惯与喜好了

使用特权

评论回复
6
chenyu988| | 2015-3-8 09:58 | 只看该作者
程序飞了
while(1)
{
    if(flag==0x02)
     {
          putchar0(0xaa);
     }
}

使用特权

评论回复
7
sanguanko|  楼主 | 2015-3-8 13:01 | 只看该作者
真的是哦,谢谢 chenyu988

使用特权

评论回复
8
蓝魔大师弟| | 2015-3-13 14:11 | 只看该作者
学习了。。。。。。。。。。。。

使用特权

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

本版积分规则

262

主题

290

帖子

2

粉丝