关于AVR与PC串口通信问题

2019-07-15 19:12发布

我想在单片机AVR发送一个数字,VB上显示同样的数字,AVR那应该怎么发。我的AVR发送代码是
void send(uchar x)
{
while(!(UCSR0A&0x20));
UDR0=x;
}
可是这样发我用串口通信助手上十六进制接受的并不是我要发的数字的十六进制 比如我发10,send(10),串口助手显示的是98 80   ,到底AVR上怎么发,VB上怎么接收才能发一个数字,VB显示相同的数出来
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
moyansen
2019-07-15 22:03
你可以参考一下我的代码,你是用Atmega128吗?我的是ATMega16的
编译器是atmel Studio6.2
  1. void Init_USART()
  2. {
  3.         UCSRB|=_BV(TXEN)|_BV(RXEN)|_BV(RXCIE);        //使能发送
  4.         UCSRC|=_BV(URSEL)|_BV(UCSZ1)|_BV(UCSZ0);//8位数据位
  5.         UBRRL=(F_CPU/19200/16-1)%256;
  6.         UBRRH=(F_CPU/19200/16-1)/256;
  7. }
  8. //发送一个字节
  9. void TxByte(u8 Byte)
  10. {
  11.         UDR=Byte;
  12.         while(!(UCSRA&_BV(UDRE)));
  13. }
  14. //发送一个字
  15. void TxWord(u16 Word)
  16. {
  17.         TxByte(Word/256);//发送高字节
  18.         TxByte(Word%256);//发送低字节
  19. }
复制代码

一周热门 更多>