求PIC单片机与上位机的485通讯程序
发布网友
发布时间:2022-04-25 09:58
我来回答
共1个回答
热心网友
时间:2023-12-01 22:32
#include <pic.h>
#define uchar unsigned char
unsigned char RC_data;
int hz=0;
void usart_init()
{
TRISC6=0; //RC6:TX为发送口
TRISC7=1; //RC7:RX为接收口
TXSTA=0x24; //使能发送,高波特率
RCSTA=0x90; //串口使能,连续接收
SPBRG=0x19; //设置波特率9600
TRISD=0x00; //D口为输出
PORTD=0xF0; //D口清零
// 中断设置
PIR1=0X00;
PIE1=0X00;
RCIE=1;
TXIE=0;
INTCON=0X00;
PEIE=1;
GIE=1;
}
void interrupt uart()
{
if(1==RCIF)
{
RCIF=0;
RC_data=RCREG;
TXREG=RC_data;
}
if(1==TXIF)
{
TXIF=0;
PORTD=0X0F;
}
}
main()
{
usart_init(); //初始化
while(1);
}
单片机编程,本身不区分RS232与RS485。如果你需要RS485通讯,可以用MAX488芯片实现485通讯。再用个RS232-485转换器,接到计算机上,用个串口调试工具就能用了。追问是不是在下面这个地方加一条判断发送完成语句:while(!TRMT);
void interrupt uart()
{
if(1==RCIF)
{
RCIF=0;
RC_data=RCREG;
TXREG=RC_data;
while(!TRMT);//在这个地方是吗?
}
if(1==TXIF)
{
TXIF=0;
PORTD=0X0F;
}
}