6) 芯片使用例程:
#define RS485_Receive 1
#define RS485_Send 0
//--定义串口缓存:缓存为循环链表
unsigned char rs_buffer[RS_BUFFER_SIZE]; //串口接收缓存
int rs_buffer_pointer; //串口缓存首指针(指向最后一个接受到的字节)
int rs_buffer_amount; //串口缓字节数
//--定义结束
//--定义串口与MCU的硬件连接
sbit RS_Mode=P0^0;
//--定义结束
void RS_Init()
{
TH1=FF;
TL1=FF;
TMOD=0x21;
PS=1;
EA=1;
ET1=0;
SM0=0;
SM1=1;
SM2=0;
TR1=1;
REN=1;
RI=0;
TI=0;
ES=1;
RS_Mode=RS485_Receive;
rs_buffer_poiter=-1;
rs_buffer_amount=0;
}
void RS_Receive() interrupt 4 using 2 //中断方式接收串口数据
{
ES=0;
if(RI)
{
//此处处理串口缓存
rs_buffer_pointer++;
rs_buffer_pointer=rs_buffer_pointer%RS_BUFFER_SIZE;
rs_buffer[rs_buffer_pointer]=SBUF;
rs_buffer_amount++;
RI=0;
}
ES=1;
}
void RS_Send(unsigned char data) //用户函数,发送一个字节的数据
{
ES=0;
RS_Mode=RS485_Send;
SBUF=data;
RS_Mode=RS485_Receive;
ES=1;
while(TI==0);
TI=0;
}
评论