{ unsigned char time_out; time_out=0x00; SBUF = dat; //将数据放入SBUF中 while((!TI)&&(time_out<100)) //检测是否发送出去 {time_out++;DelayUs2x(10);}//未发送出去 进行短暂延时 TI = 0;//清除ti标志 } void SendStr(unsigned char *s,unsigned char length) //发送定长度字符串 { unsigned char NUM; NUM=0x00; while(NUM<length)//发送长度对比 { SendByte(*s); //放松单字节数据 s++; //指针++ NUM++; //下一个++ } } void UART_SER (void) interrupt 4 //串行中断服务程序 { if(RI) //判断是接收中断产生 { RI=0; //标志位清零 } if(TI) //如果是发送标志位,清零 TI=0; }
时间: 2024-01-13 22:05:22 浏览: 82
这段代码是关于串口通信的,其中包括了发送单个字节和发送定长字符串的函数。同时还有一个串口中断服务程序。RI代表接收中断标志位,TI代表发送中断标志位。在发送数据时,程序会检测TI是否为1,表示上一次发送已经完成,可以继续发送下一个字节。如果TI为0,则进行短暂延时等待上一次发送完成。串口中断服务程序中判断是否为接收中断,并将RI标志位清零。TI标志位如果为1,说明上一次发送已经完成,将其清零。
相关问题
{ unsigned char time_out; time_out=0x00; SBUF = dat; //将数据放入SBUF中 while((!TI)&&(time_out<100)) //检测是否发送出去 {time_out++;DelayUs2x(10);} //未发送出去 进行短暂延时 TI = 0; //清除ti标志 } void SendStr(unsigned char *s,unsigned char length) //发送定长度字符串 { unsigned char NUM; NUM=0x00; while(NUM<length) //发送长度对比 { SendByte(*s); //放松单字节数据 s++; //指针++ NUM++; //下一个++ } } void UART_SER (void) interrupt 4 //串行中断服务程序 { if(RI) //判断是接收中断产生 { RI=0; //标志位清零 } if(TI) //如果是发送标志位,清零 TI=0; }
这是一段8051单片机的串口通信代码,其中包括发送单个字节的函数SendByte和发送定长字符串的函数SendStr,同时还包括一个串口中断服务程序UART_SER。RI和TI分别是接收中断和发送中断的标志位,此处用来判断是否发生了对应的中断。DelayUs2x函数可能是一个短暂延时的函数,用于等待发送完成。
void UsartConfiguration() { T2MOD = 0x01; //×Ô¶¯ÖØÔØ T2CON = 0x30; //T2ÓÃ×ö·¢ËͽÓÊÕʱÖÓ TL2 = RCAP2L = (65536-(FOSC/32/BAUD)); //Set auto-reload vaule TH2 = RCAP2H = (65536-(FOSC/32/BAUD)) >> 8; TR2 = 1; //¶¨Ê±Æ÷2¿ªÊ¼¼Æʱ SCON = 0x50; //8-bit variable UART PCON = 0X00; //²¨ÌØÂʲ»¼Ó±¶ ES = 1; //Enable UART interrupt EA = 1; //Open master interrupt switch } //´®¿Ú2·¢ËÍÒ»×Ö½ÚÊý¾Ý void UART1_SendByte(unsigned char DAT) { SBUF = DAT; while(TI == 0); TI=0; } //´®¿Ú2·¢ËÍ×Ö·û´®Êý¾Ý void UART1_SendString(unsigned char *DAT, unsigned char len) { unsigned char i; for(i = 0; i < len; i++) { UART1_SendByte(*DAT++); }
这段代码是关于串口通信的配置和发送函数的代码。函数UsartConfiguration()用于配置串口通信的相关参数,包括波特率、数据位、停止位等。函数UART1_SendByte()用于发送单个字节的数据,将数据写入SBUF寄存器,并等待TI标志位变为1,表示数据发送完成。函数UART1_SendString()用于发送字符串,通过循环调用UART1_SendByte()函数,逐个发送字符串中的字符。
阅读全文