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

📄 009.c

📁 串口通讯(查询方式)实验成功
💻 C
字号:
  	 
	 
	 ////////////////////////////////
    ////cocoguojia E-51开发板///////
   //////cocoguojia@163.com ///////
  ////////////////////////////////


 
 //实验目的:利用串口助手联调,当串口助手发送0x55时,单片机向串口助手发送0xAA
 //波特率为9600 单片机用11.0592的晶振


 //---------------------------------------
 //头文件
 #include<AT89X51.H>
#include<intrins.h>

 //---------------------------------------


 //---------------------------------------
 //数据类型替代声明
 #define u8  unsigned char
 #define u16 unsigned int
		   sbit LED0=P0^0;
sbit LED1=P0^1;
sbit LED2=P0^2;
sbit LED3=P0^3;
sbit LED4=P0^4;
sbit LED5=P0^5;
sbit LED6=P0^6;
sbit LED7=P0^7;

u8 buf[10] = 0;
u8 cnt = 0;
u8 cnt1 = 0;
u16 cnt2 = 0;


 //---------------------------------------


 //---------------------------------------
 //初始化
 void init(void) 
 {
 	SCON=0X50;
	TH1=0XFD;
	TL1=0XFD;
	TMOD=0X20;
	TR1=1;	
 }
//---------------------------------------


//---------------------------------------
//接受子函数
 u8 rec_data(void)
 {
 	if(RI==0)
	{
		return 0;	
	}
	else
	{
		cnt1 = 0;
		cnt2 = 0;
		RI=0;
		buf[cnt] = SBUF;
		if(cnt ==0)
		{
			if(buf[cnt] != 0x01) 	//ID不对	  报文格式 01 ** ## -- -- -- -- -- 其中01为地址,**为命令字 ##为数据长度(--的个数)
			{
				return 0;	
			}	
		}
		cnt ++;
		if(cnt == buf[2] + 3)
		{
			return 1;	
		}
		return 0;
	}
 }
//---------------------------------------

//---------------------------------------
//发送子函数
void send_data(u8 i)
{
	SBUF=i;
	while(TI==0)
	{
		;
	}
	TI=0;
}
//---------------------------------------

//---------------------------------------
//主函数

void main(void)
{ 
	u8 i = 0;
	cnt = 0;
	init();
	while(1)
	{
		if(rec_data())
		{
			; //接收数据处理
			for(i = 0;i< cnt;i++)
			{
				send_data(buf[i]);	
			}
			  buf[0] = 0;
			   cnt=0;
			cnt = 0;

		}
		
		cnt1 ++;
		if(cnt1 == 0xff)
		{
			cnt2 ++;
			if(cnt2 == 10000)
			{
				cnt2 = 0;
				buf[0] = 0;
				cnt = 0;
			}	
		}
	}
}
//---------------------------------------







⌨️ 快捷键说明

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