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

📄 被动式.c

📁 S51单片机和LABVIEW通信。在LABVIEW输入框输入中文字符
💻 C
字号:
#include <reg51.H>
unsigned char bdata  dat;
unsigned char bdata biaoz=0;
sbit b7=biaoz^7;
sbit sd7=dat^7;
sbit sd6=dat^6;
sbit sd5=dat^5;
sbit sd4=dat^4;
sbit sd3=dat^3;
sbit sd2=dat^2;


sbit p_7=P3^7;
sbit p_6=P3^6;
sbit p_5=P3^5;
sbit p_4=P3^4;
sbit p_3=P3^3;
sbit p_2=P3^2;

sfr WDTRST = 0xA6;


void delay(unsigned char a);
//void delay1(unsigned long a);
void chu_shi();
void CLRWDT();

unsigned char n=0;
unsigned char data RAM[3];










///////////////////////////////////////////////////
/**********************主程序*****************/
 void main ()
{
 chu_shi();
 while(1)
 {
   CLRWDT();//喂狗
   if(b7==1)//缓冲区有数据
   {
    b7=0;
    ES=0;//不允许串口中断
    EA=0;//关总中断
    
    switch(RAM[0])
    {
     case 0:
      switch(RAM[1])
      {
       case 0:
       P0=~RAM[2];
       break;

       case 1:
       SBUF=P0;
       while(!TI);
       TI=0;
       break;
      }
     
     break;



     case 1:
      switch(RAM[1])
      {
       case 0:
       P1=RAM[2];
       break;

       case 1:
       SBUF=P1;
       while(!TI);
       TI=0;
       break;
      }
     break;




     case 2:
      switch(RAM[1])
      {
       case 0:
       P2=RAM[2];
       break;

       case 1:
       SBUF=P2;
       while(!TI);
       TI=0;
       break;
      }
     break;



     case 3:
      switch(RAM[1])
      {
       case 0:
       p_7=sd7;
       p_6=sd6;
       p_5=sd5;
       p_4=sd4;
       p_3=sd3;
       p_2=sd2;
       
       
       
       break;

       case 1:
       SBUF=P3;
       while(!TI);
       TI=0;
       break;
      }
     
     break;


    }




    ES=1;//允许串口中断
    EA=1;//开总中断
   }
  
   else
   delay(10);

 }
}



void delay(unsigned char a)
 {
 unsigned char b;
 for(b=a;b>0;b--)
  {
   CLRWDT();//喂狗
  }
 }

/*
void delay1(unsigned long a)
 {
 unsigned long b;
 for(b=a;b>0;b--)
  {
   CLRWDT();//喂狗
  }
 }

*/

void CLRWDT()
{
WDTRST=0x1E;
WDTRST=0xE1;//看门狗
}

///////////////////////////////////////////////////
/**********************系统初始化*****************/
void chu_shi(void)
{
 CLRWDT();//初始化看门狗

 TMOD=0X20;  //定时器1方式2
 //PCON=0X80;//波特率*2
 TH1=0XFD;//波特率9600
 TL1=0XFD;
 SCON=0X50;//串口方式允许接受
 ES=1;//允许串口中断
 EA=1;//开总中断
 TR1=1;//启动定时器1
}
//////////////////////////////////////////////////



void uart1()interrupt 4 using 1
{
 unsigned char temp;
 CLRWDT();//喂狗
 if(RI==1)//是接受中断
 {
    RI=0;
    temp=SBUF;//接受数据
    RAM[n]=temp;//保存数据
    //SBUF=temp;//返回数据
    n=n+1;
    if(n==3)
    {
     n=0;
     b7=1;
     dat=RAM[2];
     CLRWDT();//喂狗
     }
 }
 else
 TI=0;//是发射中断
}

⌨️ 快捷键说明

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