求教 串口中断接收
#include<iom64v.h>#include<macros.h>
#define uchar8 unsigned char
#define uchar16 unsigned short
/*串口1初始化*/
volatile uchar8 temp_s;
void USART1_inital(void)
{
UCSR1B = 0x00; //disable while setting baud rate
UCSR1A = 0x80; //U2X = 0,不加倍数率
UBRR1L = 0x19; //set baud rate lo
UBRR1H = 0x00; //set baud rate hi波特率设定
UCSR1C = 0x06; //帧结构设定 8数据 无校验 1停止
UCSR1B = (1<<RXCIE1)|(1<<RXEN1)|(1<<TXEN1); //接收结束使能中断,发送接收使能
}
void USART_Transmit(uchar8 data)
{
while(!(UCSR1A&(1<<UDRE1)));
UDR1=data;
}
void delay_ms(uchar16 data)
{
uchar16 i;
while(data--)
{
for(i=1;i<50000;i++);
}
}
#pragma interrupt_handler uart1_rx_isr:iv_USART1_RX
void uart1_rx_isr(void)
{
temp_s=UDR1;
}
int main(void)
{
CLI();
USART1_inital();
//DDRD|=0X08;
SEI();
while(1)
{
if(temp_s==0x21)
{
USART_Transmit(0x99);
}
delay_ms(10);
}
}
程序实现串口工具发送一个0x21,板子返回一个0x99。但是好像串口接收中断不好用。请帮忙分析下,谢谢。
怎么个不好用法?请详细说明。 怎么个不好用法?请详细说明。 你没有打开中断吧? 铜河 发表于 2013-3-19 16:40 static/image/common/back.gif
怎么个不好用法?请详细说明。
谢谢,问题已解决,我程序熔丝设置没开看门狗,本身程序初始化部分也有错RXC置位了。
页:
[1]