int fbnum=0x00;
char fbdata[20];
char usart0_rdata;
char usart1_rdata;
//*************************************************************************
// 串口初始化服务子程序
//*************************************************************************
void usart0_init()
{
//UCSR0A=0x00; //单倍速模式
UCSR0B=0x98; //接收中断允许
UCSR0C=(1<
UBRR0H=baud_h; //写波特率的值
UBRR0L=baud_l;
}
void usart1_init()
{
//UCSR1A=0x00; //单倍速模式
UCSR1B=0x98; //接收中断允许
UCSR1C=(1<
UBRR1H=baud_h; //写波特率的值
UBRR1L=baud_l;
}
//*************************************************************************
// 数据处理服务子程序
//*************************************************************************
void datado(char getdata)
{
int i=0;
if(getdata==\'a\')
{
for(i=0;i<=fbnum;i++)
{
UDR1=fbdata
;
delay_ms(10);
}
UDR1=usart1_rdata;
delay_ms(10);
}
}
//*************************************************************************
// 串口0相关中断服务子程序
//*************************************************************************
//数据接收中断向量
SIGNAL(SIG_USART0_RECV) //中断服务程序
{
usart0_rdata=UDR0; //将接收到的数据取出
fbdata[fbnum]=usart0_rdata;
fbnum++;
}
//*************************************************************************
// 串口1相关中断服务子程序
//*************************************************************************
//数据接收中断向量
SIGNAL(SIG_USART1_RECV) //中断服务程序
{
usart1_rdata=UDR1; //将接收到的数据取出
datado(usart1_rdata);
}
//*************************************************************************
// 主程序
//*************************************************************************
void main()
{
usart0_init(); //usart0串口初始化
usart1_init(); //usart1串口初始化配置
SREG|=0x80; //开启全局中断
while(1)
{
delay_ms(1000);
if(usart1_rdata==\'a\')
{
delay_ms(10);
int i;
for(i=0;i<=fbnum;i++)
{
UDR1=fbdata;
delay_ms(10);
}
}
else
{
UDR1=usart1_rdata;
delay_ms(10);
}
}
}
我给串口0输入一串字符,串口1输入a结果在串口1中输出了这串字符,并且输出一个a
但是在主程序中却不停的输出ox00,我就奇了怪了。if语句没有执行啊。本文来自论坛,点击查看完整帖子内容。