标题: stc89c52 双机通信 [打印本页]

作者: 朝朝1    时间: 2021-2-1 21:09
标题: stc89c52 双机通信
单片机发送端

#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;
        }

                 

        }

}









欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1