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

📄 串口通信.c

📁 单片机51系列的串口通信例程,良好的模块说明.使你更容易全面掌握串口通信的操作.内部含相应的数码管操作.
💻 C
字号:
//=====================================================================//
//                          串口通信程序演示                           //
//  本程序通过数码管,Led指示灯的闪亮来表示当前串口通信的结果,串口通信使//
//单片机与电脑之间通信的桥梁,通过对它的学习,可以很好的用电脑来进行单片 //
//的控制,及对单片机数据的采集.因此串口通信被广泛的用于工业控制中.      //
//  程序运行效果:  打开本机电源开关后,可以看到P1端Led指示灯在不停的闪耀//
//,我们使用"串口调试助手"或其它软件向单片机发送数据,可以看到相应的数据 //
//显示在数码管上,并且发送的数据又返回到电脑中.(只显示0-9数字)          //
//---------------------------------------------------------------------//
//  开发日期: 2009/01/29   编写串口通信程序演示的最初代码              //
//  修改日期:                                                          //
//  程序作者: guojun     邮箱:Guojun2008a@126.com                      //
//  程序备注: 此程序仅为表现本机功能而演示用,当用作实际工程时请慎用.   //
//=====================================================================//
#include <at89x51.h>               //包含51单片机相关头文件
#define RunLed P1                  //定义运行指示灯显示端口
#define ShowPort P2                //定义数码管显示端口
unsigned char code LedShowData[]=  //定义数码管显示数据变量
   {0x03,0x9F,0x25,0x0D,0x99,0x49, //定义固定存储显示字符
              0x41,0x1F,0x01,0x19};//1,2,3,4,5,6,7,8,9,0
void ComBreak() interrupt 4        //定义串口通信子程序
{unsigned char RecvData;           //定义串口数据接收变量
 if(RI==1)                         //判断是否接收数据
 { RecvData=SBUF;                  //将接收到的数据放入暂时变量
   if(RecvData<10)                 //判断接收到的数据是否小于10
   {
    ShowPort=LedShowData[RecvData];//将接收到的数据通过数码管显示出来
   }
   SBUF=RecvData;                  //向电脑返回当前接收到的数据
   RI=0;                           //清除接收中断标志位
 }
 if(TI==1)                         //判断是否是发送中断
 {
   TI=0;                           //清除发送中断标志位
 }
}
void main()                        //主程序入口
{
 unsigned int FlashTime=8000;      //程序运行指示灯延时变量
 SCON=80;                          //设置串口模式为8位数据
 TMOD=32;                          //设置定时/计数器模式
 TH1=0xFD;                         //给定时器1高八位初始化初值
 TL1=0xFD;                         //给定时器1低八位初始化初值
 TR1=1;                            //开启定时器1
 ES=1;                             //开启串口通信功能
 REN=1;                            //开启接收中断标志
 EA=1;                             //总中断开启
 while(1)                          //程序主循环
 { while(FlashTime--);             //延时子循环,用于运行闪灯效果
   FlashTime=8000;                 //对指示灯延时初始化
   RunLed=~RunLed;                 //将指示灯显示端口取反
 }
}

⌨️ 快捷键说明

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