485通信c语言编程linux,485通讯问题(C语言)

485通讯问题(C语言)

[复制链接]

我写了一个485通讯程序,实现单片机(PIC16F877A)收发数据(上位机),用串口调试助手(232)调试不通,哪位大侠帮我看看程序,谢谢!

#include

__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

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);

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值