程序在这,请指教[原创]
//串口初始化程序 中断方式 ICC AVR 编译通过
#pragma interrupt_handler USART0_Interrupt_R:20
#pragma interrupt_handler USART0_Interrupt_T:24
#pragma interrupt_handler USART1_Interrupt_R:21
#pragma interrupt_handler USART1_Interrupt_T:25
//串口0
void USART0_Init(void)
{
UBRR0H = 0x00;
UBRR0L = 0x2f; //set baud rate =9600KBPS
UCSR0C|= 0x8e; // 1 stop bits,8 bits data
UCSR0A = 0x00; //
UCSR0B = 0xF8;//MY_UCSR0B; //
}
//串口1
void USART1_Init(void)
{
ACSR |= ( 1 < < ACD );//这一行是想关闭模拟比较器,不知道有没有这个必要
UBRR1H = 0x00;
UBRR1L = 0x2f; //set baud rate =9600KBPS
UCSR1C|= 0x8e; //1 stop bits,8 bits data
UCSR1A = 0x00; //disable
UCSR1B = 0xF8;//MY_UCSR1B; //disable
}
void USART0_Interrupt_T( void )//Usart0发送
{
//略
}
void USART0_Interrupt_R( void )//Usart0接收
{
//略
}
void USART1_Interrupt_T( void )//Usart1发送
{
//略
}
void USART1_Interrupt_R( void )//Usart1接收
{
//略
}
本来usart0和usart1的初始化和中断函数都是放在两个头文件里的,单独使用其中的一个是没有问题的,但是将两个头文件全部加近来,编译通过,但是在单片机运行是,收发都没有反映,好像根本没有引起中断。我也是过将两个头文件合并成一个头文件,两个串口一起初始化(我想其实是一样的)结果一样,还是不行。
发表时间:2004年9月18日15:02:01