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

📄 tongxinyuandaima.txt

📁 这是一个PC机与单片机通信源代码
💻 TXT
字号:
PC机与单片机通信源代码


#include <reg52.h>
#include <string.h>
#include <stdio.h>
#define uint  unsigned int 
#define uchar unsigned char
void delay(uint time)//ms延时函数
{
uint i,j;
for (i=0;i<time;i++)
  for (j=0;j<125;j++);
  
}
//--------------------------------------------------
//串口初始化
//--------------------------------------------------
void uart_rest()
{

TMOD = 0X20;   //定时器T1使用工作方式2
TH1 = 0xf9;    //波特率9600
TL1 = 0xf9;
TR1 = 1;    //开始计时
PCON = 0x80;   //SMOD = 1
SCON = 0X50;   //工作方式1,允许接收
EA = 0;     //关闭全部中断
}
//--------------------------------------------------
//发送数据,参数dat为发送的数据
//--------------------------------------------------
void put_date(uchar dat)
{ 
SBUF = dat;  //
while(!TI);   //等待数据发送完成
TI = 0;    //清发送标志位 
}
//---------------------------------------------------
//发送字符串,参数str为待发送字符串
//---------------------------------------------------
void put_string(uchar *str) 
{
while(*str != '\0')  //发送到字符串尾结束
{
  put_date(*str);
  str++;    //发送下一数据
}
}
//----------------------------------------------------
//接收数据,返回值dat是接收到的数据
//----------------------------------------------------
uint get_date()
{
uint dat;
while(!RI);   //等待数据接收
dat = SBUF;   //保存接收到的数据
RI = 0;    //清接收标志位
return dat;  
}
/*****************************************************
* 接收字符串,参数str指向保存接收字符串的缓冲区
*
* 注意:在本函数中,用串口发送字符串时,在发送结束时
*   应该加上一个结束字符,在本函数中用!做为结束符
*  而在调用函数时则不需要加上!
*****************************************************/
void get_string(uchar *str)
{
uint count = 0;
do
{
  *str = 0;    //清缓冲区
  *str = get_date();  //保存接收到的数据
  str++;     //准备接收下一数据
  count++;
  if(count >16)   //如果超出了范围(count)为0
  {
   *(str-1) = 0;
   break;
  }
}while(*(str-1) != '!'); //接收到数据尾以!则停止
*(str-1) = 0;

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

main()
{
char buf[16] ;    
delay(100);
uart_rest();   //串口初始化
        put_string("reday dx?");
delay(20);         //PC发送一个字符串
while(1)
{
  
  get_string(buf);
  if(strcmp(buf,"123") == 0) //strcmp函数,buf和后值相等,返回0
   put_string("OK ");
  else
   put_string("wrong");
}
}/**/

⌨️ 快捷键说明

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