RS232串口驱动(C51)
扫描二维码
随时随地手机看文章
/*
RS232 driver
*/
//#include"D:DesignProgrammingRS232.h" /*引用地址*/
#include
#define uchar unsigned char
#define uint unsigned int
////////////////////////用户接口///////////////////////////
void RS232_ini(/*uint speed*/);
void RS232_send(uchar word);
uchar RS232_rec_buffer; //数据接收变量
bit RS232_rec_flag; //接受标志~需手动置0
//////////////////////////////////////////////////////////
///////串口接收中断函数,主函数必须定义一全局变量 unsigned char RS232_rec_buffer;//////////////
///////////////////////////////////////////////和 bit RS232_rec_flag; ////////////////////
void RS232_rec() interrupt 4 using 2//串口中断服务程序
{
RS232_rec_buffer=SBUF;//接收数据
delayms(1);
RS232_rec_flag=1; //接受标志~需手动置0
RI=0;
}
////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////串口发送函数/////////////////////////////////////////////////
void RS232_send(uchar word)
{
SBUF=word;
while(TI==0);
TI=0;
}
//////////////////////////////////////////////////////////////////////////////////////////////
void RS232_ini(/*uint speed*/) //速度还没有作转换
{
TMOD=0x21; // T/C1工作在方式2(8位自装入)用于产生波特率
TH1=0xF3; //波速率为2400
TL1=0xf3;
TR1=1;
EA=1;
SCON=0XD0; //0xD0=11010000 方式3,允许接收
ES=1;//串口使能中断
}
//包含LCD1602.h时 去掉 void delayms(unsigned int i) body
/*
void delayms(unsigned int i)
{
unsigned int j;
for(;i>0;i--)
for(j=200;j>0;j--);
}
*/