欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1441|回復: 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;
        }

                 

        }

}




回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表