找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1105|回复: 0
打印 上一主题 下一主题
收起左侧

stc89c52 双机通信

[复制链接]
跳转到指定楼层
楼主
ID:812531 发表于 2021-2-1 21:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机发送端

#include "reg52.h"                         //此文件中定义了单片机的一些特殊功能寄存器
unsigned char num;                        //全局变量 发送的就是num数据
sbit k1=P3^4;                                 //按键定义 定义四个按键
sbit k2=P3^5;
sbit k3=P3^6;
sbit k4=P3^7;
void delay(void)                             //延时函数  这里用不到 加上去以防万一
{
     unsigned char m,n;
         for(m=0;m<200;m++)
          for(n=0;n<250;n++)
          ;
}
void Send(unsigned char dat)                         //发送数据函数
{
         SBUF=dat;                                           //发送的数据放进sbuf寄存器中
         while(TI==0)                                        //如果TI等于0 则在此处一直等待
         ;
         TI=0;                                                       //发送完之后  手动清零 防止影响下次发送
}
        void charnum ()
        {
         
          if(k1==0)                                       //对要发送的数据进行赋值
          {
                  num=1;
      
                while(!k1);
          }
      
         else if(k2==0)
          {
                  num=2;
      
                while(!k2);
          }
          else if(k3==0)
          {
                  num=3;
      
                while(!k1);
          }
      
         else if(k4==0)
          {
                  num=4;
               
                while(!k2);
          }
        }
void main(void)
{                 
        TMOD=0X20;               //
        SCON=0X40;
        PCON=0X00;                  //波特率不加倍
        TH1=0Xfd;                  //波特率设置为9600
        TL1=0xfd;
        EA=1;                        //打开总中断
        ES=1;                         //打开串口中断
        TR1=1;                         //打开计时器
        while(1)
        {
                 charnum ();
          Send(num);
        }
}
单片机接收端
#include "reg52.h"                         //此文件中定义了单片机的一些特殊功能寄存器
unsigned char dat,num;

   

unsigned char Receive(void)

{

         

                 while(RI==0);

                 

                 RI=0;         

                 dat=SBUF;


             return dat;


}


void main(void)

{         


        TMOD=0X20;

        SCON=0X50;

        PCON=0X00;

        TH1=0Xfd;

        TL1=0xfd;

        TR1=1;

        REN=1;


        while(1)

        {  


   num=Receive();
        switch(num)
        {
        case 1:P1=0xfe; break;
        case 2:P1=0xfc; break;
        case 3:P1=0xfd; break;
        case 4:P1=0xff; break;
        }

                 

        }

}




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表