圣龙扬特-AVR电子
标题:
求教 串口中断接收
[打印本页]
作者:
woai0201
时间:
2013-3-19 08:56
标题:
求教 串口中断接收
#include<iom64v.h>
#include<macros.h>
#define uchar8 unsigned char
#define uchar16 unsigned short
/*串口1初始化*/
volatile uchar8 temp_s[5];
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[2]=UDR1;
}
int main(void)
{
CLI();
USART1_inital();
//DDRD|=0X08;
SEI();
while(1)
{
if(temp_s[2]==0x21)
{
USART_Transmit(0x99);
}
delay_ms(10);
}
}
程序实现串口工具发送一个0x21,板子返回一个0x99。但是好像串口接收中断不好用。请帮忙分析下,谢谢。
作者:
铜河
时间:
2013-3-19 16:40
怎么个不好用法?请详细说明。
作者:
铜河
时间:
2013-3-19 16:40
怎么个不好用法?请详细说明。
作者:
sunany
时间:
2013-3-19 18:46
你没有打开中断吧?
作者:
woai0201
时间:
2013-3-20 09:23
铜河 发表于 2013-3-19 16:40
怎么个不好用法?请详细说明。
谢谢,问题已解决,我程序熔丝设置没开看门狗,本身程序初始化部分也有错RXC置位了。
欢迎光临 圣龙扬特-AVR电子 (http://avr.cnta.net/)
Powered by Discuz! X2.5