串口中断处理 m=SBUF; SBUF=m;自收发

来源:互联网 发布:淘宝义卖四百字作文 编辑:程序博客网 时间:2024/06/15 03:14
volatile uint8 Sending;/********************************************************************函数功能:串口初始化。入口参数:无。返    回:无。备    注:无。********************************************************************/void InitUART(void){ EA=0; //暂时关闭中断 TMOD&=0x0F;  //定时器1模式控制在高4位 TMOD|=0x20;    //定时器1工作在模式2,自动重装模式 SCON=0x50;     //串口工作在模式1 TH1=256-Fclk/(BitRate*12*16);  //计算定时器重装值 TL1=256-Fclk/(BitRate*12*16); PCON|=0x80;    //串口波特率加倍 ES=1;         //串行中断允许 TR1=1;        //启动定时器1 REN=1;        //允许接收  EA=1;         //允许中断}////////////////////////End of function///////////////////////////////********************************************************************函数功能:串口中断处理。入口参数:无。返    回:无。备    注:无。********************************************************************/void UartISR(void) interrupt 4{  char m;  ES = 0;  if(RI)    //收到数据  {   m=SBUF;   SBUF=m;   RI=0;   //清中断请求  }  else      //发送完一字节数据  {   TI=0;   Sending=0;  //清正在发送标志  }  ES = 1;}////////////////////////End of function///////////////////////////////********************************************************************函数功能:往串口发送一字节数据。入口参数:d: 要发送的字节数据。返    回:无。备    注:无。********************************************************************/void UartPutChar(uint8 d){ SBUF=d; //将数据写入到串口缓冲 Sending=1; //设置发送标志 while(Sending); //等待发送完毕}////////////////////////End of function///////////////////////////////********************************************************************函数功能:发送一个字符串。入口参数:pd:要发送的字符串指针。返    回:无。备    注:无。********************************************************************/void Prints(uint8 * pd){ while((*pd)!='\0') //发送字符串,直到遇到0才结束  {   UartPutChar(*pd); //发送一个字符   pd++;  //移动到下一个字符  }}////////////////////////End of function//////////////////////////////