九滴水 发表于 2012-11-30 07:44:27

USART通讯问题

我有2个ATmega16的小板,打算做个USART通讯的实验,程序是修改马老师那个USART章节最开始的那个简单程序,后面那个实际应用有点复杂了,看不懂。。

interrupt void usart_rx_isr(void)   // USART接收中断服务
{
    unsigned char status,data;
    status = UCSRA;
    data = UDR;
    if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0) //帧错误 奇偶校验错误 数据溢出
    receive_data = data;
   union_n=union_n+1; //相当于union_n从1开始
   if(union_n-1>=5) union_n=1;
    buffer_receive=receive_data;
   
}
void USART_Transmit(unsigned char data)
{
    while (!(UCSRA & 1<<UDRE));   // 等待发送寄存器空                           
    UDR = data;                                 // 发送数据                  
}

void main()
                buff=0x05;
                buff=0x04;
                buff=0x03;
                buff=0x02;
                buff=0x01;
                for(y=0;y<5;y++)               
                {
                  USART_Transmit(buff);
                  //delay_ms(200);
                }

主要的框架是这些 还有一些键盘的,现在的问题是 主机发送5个字符,从机可以接受到,但是从机应答5个字符,主机就无法正常接受了,新手,不知道如何修改下实现2个板子的通讯。
页: [1]
查看完整版本: USART通讯问题