1、PIC 单片机485通信接收——源代码
#include
#include
#include"stdio.h"
#defineucharunsignedchar
#defineuintunsignedint
__CONFIG(WDTDIS &HS &PWRTDIS &BORDIS);//设置配置位
//WDTDIS :disablewatchdogtimer
//LVPDIS :lowvoltage programmingdisabled
//HS :highspeedcrystal/resonator
//PWRTDIS :disablepoweruptimer
//BORDIS :disablebrownoutreset
#definePORTAIT(adr,bit)((unsigned)(&adr)*8+(bit)) //绝对位操作指令;
staticbitDI@(PORTAIT(PORTB,0);
staticbitCK @(PORTAIT(PORTB,1);
staticbitLA@(PORTAIT(PORTB,2);
staticbitOE @(PORTAIT(PORTB,3);
#defineRE RC2 //接收允许控制位
#defineDERC3 //发送允许控制位
ucharredata;
//
voidUSART_Init(void);
voidSEND_Byte(uchardat);
voidSEND_DM114_DA(ucharDAT);
voiddelay50us(ucharz);
//
voiddelay50us(ucharz)
{
uchari,j;
for(j=0;j
for(i=0;i<6;i++)
;
}
//
voidSEND_Byte(uchardat)
{
if(dat==0)
// DI= 0;
RB0=0;
else
DI=1;
//RB0= 1;
}
voidSEND_DM114_DA(ucharDAT)
{
uchari;
OE=1;
//RB3= 1;
LA=0;
//RB2= 0;
for(i=0;i<8;i++)
{
SEND_Byte(DAT&0x80);
DAT<< =1;
CK=0;
CK=1;
//RB1= 0;
//RB1= 1;
}
LA= 1;
OE= 0;
//RB2= 1;
// RB3 =0;
}
//
//
voidUSART_Init(void)
{
SPBRG =77; //高速 波特率960012MHz SPBRG =0x4D
//SPBRG=129;//高速 波特率960020MHz
TXSTA=0x04;
//TXSTA:CSRCTX9TXENSYNC -- BRGHTRMTTX9D
// 0 0 0 0 1 0 0
RCSTA= 0x80;
//RCSTA:SPEN RX9SREN CRENADDENFERR OERR RX9D
// 1 0 0 0 0 0 0 0
RCIE =1; //开接收中断
TXEN=1;
CREN =1; //接收使能
TRISC6= 1;//设置为输入状态
TRISC7= 1;
// TXIE =1; //开发送中断
TRISC3= 0;//设置为输出状态
TRISC2= 0;
RE=0; //SN75176开启接收
DE=0; // SN75176关闭发送
PEIE =1; //开外设中断
GIE=1; //开总中断
TRISB =0x00; //B口为输出
}
//
voidinterruptcom(void)
{
if(RCIE&&RCIF)
{
redata=RCREG;
RE=1; //SN75176关闭接收
DE=1; // SN75176开启