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

📄 master.c

📁 不少单片机C代码
💻 C
字号:
#include <reg51.h>
#define  uchar unsigned char
#define  SLAVE  0x02
#define  BN  16
uchar idata rbuf[16];
uchar idata tbuf[16]={"master transmit"};

void err(void)
{ SBUF=0xff;
  while(TI!=1);TI=0;
}

uchar master (uchar addr,uchar command)
{ uchar  aa,i,p;
  while(1)
   { SBUF=SLAVE; /* send address */
     while(TI!=1);TI=0;
     while(RI!=1);RI=0;
     if(SBUF!=addr) err();
     else {
       TB8=0;
       SBUF=command;
       while(TI!=1);TI=0; 
       while(RI!=1);RI=0;
       aa=SBUF;
       if((aa&0x08)==0x08) { TB8=1; err();}
       else {
         if (command==0x01)  
           { if((aa&0x01)==0x01) 
               { do{  
                   p=0;
                   for(i=0;i<BN;i++)
                     { SBUF=tbuf[i];
                       p+=tbuf[i];
                       while(TI!=1);TI=0;
                      }
                      SBUF=p;
                      while(TI==0);TI=0;
                      while(RI==0);RI=0;
                 } while(SBUF!=0);
                 TB8=1;
                 return(0);
               }
           }
         else { 
           if((aa&0x02)==0x02)
           { while(1) {
               p=0; 
               for(i=0;i<BN;i++)
               { while(RI!=1);RI=0;
                 rbuf[i]=SBUF;
                 p+=rbuf[i];
               }
               while(RI==0);RI=0;
               if(SBUF==p) {
                 SBUF=0x00;
                 while(TI==0);TI=0;
                 break;
               }
               else {
                 SBUF=0xff;
                 while(TI==0);TI=0;
               }
             }
             TB8=1;
             return(0);
           }
         }
       }        
     } 
   } 
}

void main(viod)
{ 
  TMOD=0x20;
  TL1=0xfd;TH1=0xfd;
  PCON=0x00;
  TR1=1;
  SCON=0xf0;
  master(SLAVE,0x01);
  master(SLAVE,0x02);
} 

⌨️ 快捷键说明

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