woai0201 发表于 2013-3-19 08:56:10

求教 串口中断接收

#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:38

怎么个不好用法?请详细说明。

铜河 发表于 2013-3-19 16:40:49

怎么个不好用法?请详细说明。

sunany 发表于 2013-3-19 18:46:15

你没有打开中断吧?

woai0201 发表于 2013-3-20 09:23:50

铜河 发表于 2013-3-19 16:40 static/image/common/back.gif
怎么个不好用法?请详细说明。

谢谢,问题已解决,我程序熔丝设置没开看门狗,本身程序初始化部分也有错RXC置位了。
页: [1]
查看完整版本: 求教 串口中断接收