我写了一个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); } } }
|