⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart_51.c

📁 51单片机串口测试
💻 C
字号:
   #include <reg51.h>
   #include <string.h> 
   
   #define INBUF_LEN 4    //定义数据长度 
   
   unsigned char ch;      //字符名称
// unsigned char checksum,count3; 
   
   bit read_flag= 0 ;     //读   标志位定义

///////////////////////////初始化串口///////////////////////////////
   
void init_serialcom( void )//
   { 
       SCON = 0x50 ;  //SCON: serail mode 1, 8-bit UART, enable ucvr 
	   TMOD |= 0x20 ; //TMOD: timer 1, mode 2, 8-bit reload 
	   PCON |= 0x80 ; //SMOD=1; 
	   TH1 = 0xF9 ;   //Baud:9600 fosc=12MHz 
	   IE |= 0x90 ;   //Enable Serial Interrupt 
	   TR1 = 1 ;     // timer 1 run 
	   TI=1;         ///为什么置1发送中断标志位??????????1?
	   
	} 
	   
//向串口发送一个字符 
	  void send_char_com( unsigned char ch) 
	  { 
	     SBUF=ch; 
	     while (TI== 0); 
		 TI= 0 ; 
	   } 

/*	   
//向串口发送一个字符串,strlen为该字符串长度 
void send_string_com( unsigned char *str, unsigned int strlen)
   { 
     unsigned int k= 0 ; 
	 do { send_char_com(*(str + k)); k++; } 
	 while (k < strlen); 
   }
*/


///////////////////////////串口接收 中断 函数 /////////////////////////


void serial () interrupt 4 using 3 

	{ 
    if (RI) 
	   {  
		   RI = 0 ; 
		   ch=SBUF; 		   
		   read_flag= 1 ; //就置位取数标志 
		}
	} 


////////////////////////////////////主程序////////////////////////// 


main() 

    { 
	    init_serialcom();         //初始化串口 
		    while ( 1 ) 
			   { 
			       if (read_flag) //如果取数标志已置位,就将读到的数从串口发出 
				        { 
						    read_flag= 0 ;     //取数标志清0 
							send_char_com(ch); //将读取值从串口发出
						} 
				} 
	} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -