我写了一个485通讯程序,实现单片机(PIC16F877A)收发数据(上位机),用串口调试助手(232)调试不通,哪位大侠帮我看看程序,谢谢!
#include <pic.h>
__CONFIG(0x3531);
#define nop asm("NOP")
bank1 unsigned char count[8]={0x01,0x01,0x01,0x01,0x03,0x03,0x03,0x03}; //串口发送缓存,可以改变缓存个数
unsigned char flag=0;
unsigned char reveive[8];
//=========================延时1MS函数=======================================
void delay(unsigned int n)
{
unsigned int i,j;
for(i=0;i<n;i++)
for(j=0;j<110;j++);
}
//==========================串口设置===============================
void instuart(void)
{
TRISB = 0xC0;
TRISC = 0x80;
TXSTA=0x04; //B100 SYNC=0;BRGH=1 异步高速方式传输8bit数据
RCSTA=0x80; //SPEN=1;允许同步串行口工
SPBRG=0x25; //将传输的波特率设置为9600
PIR1=0x00;
RCIF=0;
PIE1=PIE1|0x20;
CREN=1; //允许接收数据
TXEN=1; //允许发送数据
INTCON=0xC0;
}
//======================485接收中断=============================
void interrupt LOW_ISR()
{
unsigned int i=0;
if(RCIF==1)
{
reveive=RCREG;
i++;
if(i==8)
{
flag=1; //可以放数据的解析函数在里面
}
}
}
//=======================接收主函数===================================
main()
{
unsigned int j;
instuart();
RB1=1;
while(1)
{
if(flag==1)
{
flag=0;
RB1=0;
delay(1);
for(j=0;j<8;j++)
{
TXREG=count[j];
delay(1);
}
// while(TXIF!=1);
RB1=1;
delay(1);
}
}
}