单片机交流
直播中

席毖庸

8年用户 1096经验值
擅长:596874
私信 关注
[问答]

小白求助,求一个AVR单片机串行收发程序

小白求助,求一个AVR单片机串行收发程序

回帖(1)

张慧玲

2021-11-2 11:26:05
#include       
#include
#define uchar unsigned char
#pragma interrupt_handler SerialService:12
uchar rtemp,sflag;
void SerialInit(void)
{
UCSRB=(1< UCSRC=(1< UBRRH=0;
UBRRL=51;  //晶振8M,波特率9600,则UBRR初始值为51
SREG|=BIT(7);        //开全局中断
}
void SerialService(void)
{
rtemp=UDR;                 //读接收缓冲区
//UCSRA&=~BIT(RXC); //此行没有必要,读出缓冲区后,接收结束标志位清零由硬件自动完成,而且我不确定RXC是写1清零还是赋0清零。
sflag=1;                      
}
void main(void )          
{
  SerialInit();
  while(1)
  {
   if(sflag==1)
   {
            UCSRB&=~BIT(RXCIE);  //关闭接收结束中断使能
            sflag=0;
         UDR=rtemp;                          //数据送给发送缓冲区
         while(!(UCSRA&(BIT(TXC))));  //等待发送结束
         UCSRA|=BIT(TXC);                 //清零发送结束标志位(写1清零)
         UCSRB|=BIT(RXCIE);           //打开接收结束中断使能
   }
  }
}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分