通信是通了 但是上位机收到的数据不对 用的是USART1 方向控制是PD1 485芯片是MAX485 中间的隔离光耦已经去掉 就单片机和485芯片直连 软件是这样的
#include <iom1280v.h>
#include <macros.h>
void IO_init(void)
{
DDRA =0X00;
PORTA=0XFF;
DDRB =0XFF;
PORTB=0XFF;
DDRC =0X00;
PORTC=0XFF;
DDRD|=0X0A;
DDRD&=0XFB; //RXD输入,TXD输出
PORTD=0XFF;
}
void Usart_init(void)
{
//UCSRA=0X02; //倍速选择
UCSR1B=(1<<RXEN1)|(1<<TXEN1); //使能接收,发送
UCSR1C=(1<<UCSZ11)|(1<<UCSZ10);//8bit,异步,无奇偶校验,1个停止位
UBRR1L=71; //9600波特率
UBRR1H=0;
}
void Usart_Transmit(unsigned char i)
{
while(!(UCSR1A&(1<<UDRE1))); //判断UDR是否为空
UDR1=i; //发送数据
}
unsigned char Usart_Receive(void) //定义返回值类型,否则出错
{
while(!(UCSR1A&(1<<RXC1))); //判断是否有数据未读出
return UDR1; //获取并返回接收数据
}
void main(void)
{
unsigned char temp;
IO_init();
Usart_init();
DDRD|=0X02;
PORTD&=0XFD;
temp=Usart_Receive(); //接收来自PC的数据
PORTD|=0X02;
Usart_Transmit(temp); //将收到的数据发回PC
}
上位机就用的那种串口调试助手
上位机发送数据 但接受到的数据不对
发送 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
接受 77 3B 76 1D 75 3A 74 0E 73 39 72 1C 71 38 70
问问高手们问题出在哪里 手上没有示波器 没法看
|