AVR單片機 Atmega128芯片中 接收中斷如何編寫?iccavr軟件和cvavr軟件都可以?
是這樣么?
#pragma interrupt_handler Uart_Receive:31
unsigned char data,flag=0,sum=0;
unsigned char data_table[40];
/*接收結束中斷函數*/
void Uart_Receive(void)
{
static unsigned char i=0; //因為是一位一位接收,故使用static
UCSR1B&=~(1<<7); //關閉接受結束中斷
data=UDR1;
data_table[ i]=data;
i++;
sum++;
if(data_table[i-1]=='\n') //如果等于'\n',則表示開始接受下一行數據了,則重新計數
{
data_table[i-1]='\0';
i=0;
flag=1;
}
UCSR1B|=(1<<7); //開啟接收結束中斷
}
求修改及求教。。。
|