|
#include "../brd.h"
#include <avr/io.h>
#include <avr/interrupt.h>
#define USART_RECV_VECT SIG_UART0_RECV
#define uchar volatile unsigned char
uchar flag=0;
int rdata=0;
void uart_sendB(int data)
{
while(!(UCSRA&(1<<UDRE)));
UDR=data;
while(!(UCSRA&(1<<TXC)));
UCSRA|=(1<<TXC);
}
SIGNAL(USART_RECV_VECT)
{
UCSRB&=~(1<<RXCIE);
rdata=UDR;
flag=1;
UCSRB|=(1<<RXCIE);
}
void main(void)
{
unsigned int baud=9600;
UCSRC=(1<<URSEL)|(0<<UPM0)|(3<<UCSZ0);//ASYN,8 BIT DATA,NO PARITY,1 STOP BIT ,NO DOUBLE SPEED;
UBRRL=(F_CPU/baud/16-1)%256;
UBRRH=(F_CPU/baud/16-1)/256;
UCSRA=0X00;
UCSRB=(1<<RXEN)|(1<<TXEN)|(1<<RXCIE);
SREG=0xff; //全局中断开放
DDRD=0X02; //
while(1)
{
if(flag)
{
uart_sendB(rdata);
flag=0;
}
}
}
这个程序原来用查询实现,发送没问题,加上中断接受后
不行了。请问马老师能告诉我那里出错了吗?用GCC环境编写的。希望马老师能给出详细的解答。万分感谢 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|