×
单片机 > 单片机程序设计 > 详情

RS232串口驱动(C51)

发布时间:2020-05-16 发布时间:
|

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

*/  




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
浅谈AVR中定时器几种工作模式