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

📄 master.c

📁 PC机与单片机通过串口进行
💻 C
字号:
#include <reg51.h>
#define uchar unsigned char
#define SLAVE 0x02
#define BN 16
uchar idata rbuf[16];
uchar idata tbuf[16]={"hello world"};

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

uchar master(uchar addr,uchar command)
{
  uchar aa,i,p;
  while(1)
  {  SBUF=SLAVE;
     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&0x80)==0x80) {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(void)
 {
   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 + -