当前位置:   article > 正文

AVR单片机(ATMEGA16)串行收发程序_avr单片机串口接收程序

avr单片机串口接收程序
  1. #include<iom16v.h>
  2. #include<macros.h>
  3. #define uchar unsigned char
  4. #pragma interrupt_handler SerialService:12
  5. uchar rtemp,sflag;
  6. void SerialInit(void)
  7. {
  8. UCSRB=(1<<RXCIE)|(1<<RXEN)|(1<<TXEN); //置一接收结束中断使能、接收使能、发送使能,并且其他位为0
  9. UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); //置一寄存器选择位、设置字符位数为8位,结束位1位,并且其他位为0
  10. UBRRH=0;
  11. UBRRL=51; //晶振8M,波特率9600,则UBRR初始值为51
  12. SREG|=BIT(7); //开全局中断
  13. }
  14. void SerialService(void)
  15. {
  16. rtemp=UDR; //读接收缓冲区
  17. //UCSRA&=~BIT(RXC); //此行没有必要,读出缓冲区后,接收结束标志位清零由硬件自动完成,而且我不确定RXC是写1清零还是赋0清零。
  18. sflag=1;
  19. }
  20. void main(void )
  21. {
  22. SerialInit();
  23. while(1)
  24. {
  25. if(sflag==1)
  26. {
  27. UCSRB&=~BIT(RXCIE); //关闭接收结束中断使能
  28. sflag=0;
  29. UDR=rtemp; //数据送给发送缓冲区
  30. while(!(UCSRA&(BIT(TXC)))); //等待发送结束
  31. UCSRA|=BIT(TXC); //清零发送结束标志位(写1清零)
  32. UCSRB|=BIT(RXCIE); //打开接收结束中断使能
  33. }
  34. }
  35. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/635806
推荐阅读
相关标签
  

闽ICP备14008679号