使用芯片,Atmega168PA,程序如下
//IO口初始化
void Init_IO(void)
{
PORTB = 0x3F;
//DDRB = 0x3D;
PORTC = 0x00; //m103 output only
DDRC = 0x00;
DDRD = 0X12;
PORTD = 0x10;
}
void Uart0_init(void)
{
UCSR0B=0x00; //disable
UCSR0A=0x00;
UBRR0L=((FOSC/16/BAUD)-1)%256; //16M 0x67 8M 0x33
UBRR0H=((FOSC/16/BAUD)-1)/256; //0x00
UCSR0C=0x07; //0x06 异步通信 8
UCSR0B=0x98;//0x08; //enbale 发送中断使能 ///98*/
UCSR0A=0x00;
}
//UART0 send char
void Uart0_Send(BOOL sendchar)
{
while(!(UCSR0A&(1<<UDRE0)));
UDR0 = sendchar;
}
//call this routine to initialize all peripherals
void init_devices(void)
{
CLI(); //disable all interrupts
Init_IO();
Uart0_init();
SEI(); //re-enable interrupts
}
int main(void)
{
UINT16 i = 0,j= 0;
UINT8 temp = 0x01;
UINT8 Rev;
init_devices();
while(1)
{
Value();
Uart0_Send('1');
}
}
///接收中断使能
#pragma interrupt_handler Uart0_RX:iv_USART0_RXC //中断21
UINT8 Rev0=0;
void Uart0_RX(void)
{
Rev0=UDR0;
}
只要一使能接收中断,就一直不停的进中断,不懂,求助呀!!!!!!!!!!!!!
|