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

📄 单片机通信 程序 .txt

📁 用quartus6原理编辑方式写的简易频率计我自己的实验来的 保证能使请您认真查看谢谢
💻 TXT
字号:
#include<reg51.h>

//====================================
//定义参数
//===================================
#define uchar unsigned char
#define uint  unsigned int
#define TR 1 //TR=0时发送数据

uchar  buf[6];
uchar sum;

//===================================
//初始化
//===================================
void Init(void)  //串行口初始化
{
 TMOD=0x20;
 TR1=1;
 TH0=0xfd; //设置波特率
 TL0=0xfd;
 SCON=0x50;//选择串口方式1
}

//===================================
//发送数据程序
//==================================
void send_data(void)
{
 uchar i;
 do
 {
  SBUF=0xAA;
  while(!TI);   //等待发送结束
  TI=0;
  while(!RI);  //等待B机的回答
  RI=0;

 }while((SBUF^0xAA!=0));//一直等待B机发送数据如果B机没响应,则继续发送AA
 
 do
 {
  sum=0;
  for(i=0;i<6;i++)
  {
   SBUF=buf[i];
   sum+=buf[i];
   while(!TI);
   TI=0;
  }
  SBUF=sum;
  while(!TI);
  TI=0;
  while(!RI);
  RI=0;
 }while(SBUF!=0);
}

//==============================
//接收数据端
//==============================
void receive_data(void)
{
 uchar i;
 do{}while(RI==0);RI=0;
 while(SBUF^0xAA!=0);
 SBUF=0xBB;
 while(!TI);
 TI=0;
 while(1)
 {
  sum=0;
  for(i=0;i<6;i++)
  {
   while(!RI);
   RI=0;
   buf[i]=SBUF;
   sum+=buf[i];
  }
  while(!RI);
  RI=0;
  if((SBUF^sum)==0)
  {
   SBUF=0x00;
   break;
  }
  else
  {
   SBUF=0xff;
   while(TI==0);
   TI=0;
  }
 }
}

//====================
//主函数
//=====================
void main()
{
 Init();
 if(TR==0)
 {
   send_data();
 }
 else
 {
  receive_data();
 }
}

⌨️ 快捷键说明

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