標(biāo)題: stc89c52 雙機(jī)通信 [打印本頁(yè)]

作者: 朝朝1    時(shí)間: 2021-2-1 21:09
標(biāo)題: stc89c52 雙機(jī)通信
單片機(jī)發(fā)送端

#include "reg52.h"                         //此文件中定義了單片機(jī)的一些特殊功能寄存器
unsigned char num;                        //全局變量 發(fā)送的就是num數(shù)據(jù)
sbit k1=P3^4;                                 //按鍵定義 定義四個(gè)按鍵
sbit k2=P3^5;
sbit k3=P3^6;
sbit k4=P3^7;
void delay(void)                             //延時(shí)函數(shù)  這里用不到 加上去以防萬(wàn)一
{
     unsigned char m,n;
         for(m=0;m<200;m++)
          for(n=0;n<250;n++)
          ;
}
void Send(unsigned char dat)                         //發(fā)送數(shù)據(jù)函數(shù)
{
         SBUF=dat;                                           //發(fā)送的數(shù)據(jù)放進(jìn)sbuf寄存器中
         while(TI==0)                                        //如果TI等于0 則在此處一直等待
         ;
         TI=0;                                                       //發(fā)送完之后  手動(dòng)清零 防止影響下次發(fā)送
}
        void charnum ()
        {
         
          if(k1==0)                                       //對(duì)要發(fā)送的數(shù)據(jù)進(jìn)行賦值
          {
                  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;                  //波特率設(shè)置為9600
        TL1=0xfd;
        EA=1;                        //打開總中斷
        ES=1;                         //打開串口中斷
        TR1=1;                         //打開計(jì)時(shí)器
        while(1)
        {
                 charnum ();
          Send(num);
        }
}
單片機(jī)接收端
#include "reg52.h"                         //此文件中定義了單片機(jī)的一些特殊功能寄存器
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.torrancerestoration.com/bbs/) Powered by Discuz! X3.1