串口中断处理 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//////////////////////////////