打印
[AVR单片机]

请教通信中断问题

[复制链接]
2045|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lbk708|  楼主 | 2007-4-24 14:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序:
void USART_Init( unsigned int baud )
{
    DDRD  |=(1<<(2));                
    PORTD =0xFF;
    UCSRC = (1<<URSEL) | 0x06;
    UBRRH = (unsigned char)(baud>>8);
    UBRRL = (unsigned char)baud;
    UCSRA = 0x00;
    UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
}

SIGNAL(SIG_USART_RECV) //串口接收中断服务程序
{
    uchar kk;
    //while (!(UCSRA & (1<<RXC)))
    //return UDR;
         if(UCSRA&(1<<RXC))
    {
        kk=UDR;
        UCSRA&=~(1<<(RXC));        
    //    return kk;
    }
}
我用串口助手发送一个数据,用查询方式已经调通,但用中断方式调了许久都没有调通,程序进不了中断,请教各位朋友哪里出了问题??谢谢!(小弟第一次调AVR的中断程序)

相关帖子

沙发
lbk708|  楼主 | 2007-4-24 14:17 | 只看该作者

AVR STUDIA编译器

AVR MEGA16

使用特权

评论回复
板凳
lbk708|  楼主 | 2007-4-24 14:21 | 只看该作者

请问

还有哪几个寄存器要初始化?

使用特权

评论回复
地板
没灵魂| | 2007-4-24 14:26 | 只看该作者

是用GCC编译吗?

使用特权

评论回复
5
没灵魂| | 2007-4-24 14:31 | 只看该作者

如果在标题上注明用GCC将得到永生!

神会打救你的!

使用特权

评论回复
6
lbk708|  楼主 | 2007-4-24 14:34 | 只看该作者

AVR STUDIA编译器

不会吧,那么惨,大哥,我是用AVR STUDIA编译器,你也同样要搭救我啊,听说AVR STUDIA编译器用的是GCC的核,是吗?

使用特权

评论回复
7
没灵魂| | 2007-4-24 14:44 | 只看该作者

看来悟性不够,跟神是讲缘的,呵呵。。。

使用特权

评论回复
8
lbk708|  楼主 | 2007-4-24 14:56 | 只看该作者

MEGA16是单串口的

谢谢netjob的热心帮助,MEGA16是单串口的,且我已经对这两个寄存器作了初始化,但为什么就是进不了中断?(查调方式是可以接收到数据的)
//USART 2400 8, n,1 //
UBRRH = (unsigned char)(baud>>8);
UBRRL = (unsigned char)baud;
UCSRA = 0x00;
UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
UCSRC = (1<<URSEL) | 0x06;

使用特权

评论回复
9
lbk708|  楼主 | 2007-4-24 18:18 | 只看该作者

通了

谢谢天谢谢地,终于调通了,谢谢所有热心的朋友!

使用特权

评论回复
10
BitFu| | 2007-4-24 21:20 | 只看该作者

???

     if(UCSRA&(1<<RXC))
    {
        kk=UDR;
        UCSRA&=~(1<<(RXC));        
    //    return kk;
    }

这段代码不会被执行,因为 进入中断后RXC自动被硬件清零。

使用特权

评论回复
11
lbk708|  楼主 | 2007-4-25 08:33 | 只看该作者

明白

嗯,明白,谢谢!

使用特权

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

本版积分规则

9

主题

43

帖子

0

粉丝