AVR和51单片机的通信问题

2019-07-15 11:47发布

AVR和51之间的通信,我想实现AVR通过发送1、2来控制51单片机端的亮灭。但是51端接收端的字符是01、02。一直调不同,还请大神帮我看看。谢谢了。51单片机的程序已经完全能通过电脑的PC端实现发送1和2控制灯的亮灭。//这个是AVR的程序。
#include <iom2560v.h>
#include <macros.h>
#define uint unsigned int
#define uchar unsigned char
#define fosc 12000000
#define baud 9600
/********USART1初始化:发送使能,波特率设定为9600bit/s,异步方式,8位数据,1位停止位********/
void uart1Init(void)
{
         UBRR1L = (fosc/(16*baud)-1)%256;       
         UBRR1H = (fosc/(16*baud)-1)/256;
         UCSR1B|= (1<<UCSZ12)|(1<<RXEN1)|(1<<TXEN1)|(1<<RXCIE1);
         UCSR1C = (1<<UCSZ11)|(1<<UCSZ10);
}
/********USART1初始化:等待UDR1寄存器中的数据发送完毕后,接发送本次数据********/
void uart1SendChar(unsigned char data)
{
        while(!(UCSR1A&(1<<UDRE1)));
        UDR1 = data;
}
//延时函数
void delay(uint ms)
{
        uint i,j;
        for(i=0;i<ms;i++)
           {
           for(j=0;j<1141;j++);
       }
}
//主函数
void main (void)
{
         uart1Init();
         while(1)
         {
                  //发送字符串
                uart1SendChar(1);
                delay(1000);
                uart1SendChar(2);
                delay(1000);
         }
}




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
阿斯顿地方
1楼-- · 2019-07-17 02:41
 精彩回答 2  元偷偷看……
houjue
2楼-- · 2019-07-17 08:33
阿斯顿地方 发表于 2017-3-5 09:37
什么转换板,按理说不应该需要的,他们的通信协议一样啊。

31脚啊,你查一下就晓得了。
阿斯顿地方
3楼-- · 2019-07-17 10:06
houjue 发表于 2017-3-5 10:42
31脚啊,你查一下就晓得了。

但是他们说直接点对点就可以进行通信了。中间不用加东西~
houjue
4楼-- · 2019-07-17 14:55
阿斯顿地方 发表于 2017-3-5 10:52
但是他们说直接点对点就可以进行通信了。中间不用加东西~

是呀,道理的却如此。不行的话,你再换其他的单片机试一试?

评分

参与人数 1积分 +10 收起 理由 ElecFans处女座 + 10 您的付出是论坛的动力,感谢您一直支持!.

查看全部评分

idianze
5楼-- · 2019-07-17 16:18
好帖,必须支持一下!

一周热门 更多>