fbfs.c

来自「This code it to make a bottle filling sy」· C语言 代码 · 共 106 行

C
106
字号
#include<reg52.h>

sbit VALVE=P3^6;
sbit BOTTLE=P3^7;

sbit FULL=P1^0;
sbit HALF=P1^1;
sbit EMPTY=P1^2;

void DelayMs(unsigned int value);

void main()
{
unsigned char i,Rxdata;
SCON=0x50;
TMOD=0x20;
TH1=0xFD;                       //9600 bits /sec
TR1=1;

P1=0xff;
BOTTLE=1;
VALVE=0;

while(1)
{
timeout:
VALVE=0;
while(BOTTLE==1)
{						  
if(EMPTY==0 && HALF==0 && FULL==0)
{
SBUF=0;
while(TI==0);
TI=0;
}
if(EMPTY==1 && HALF==0 && FULL==0)
{
SBUF=2;
while(TI==0);
TI=0;
}
if(EMPTY==1 && HALF==1 && FULL==0)
{
SBUF=5;
while(TI==0);
TI=0;
}
if(EMPTY==1 && HALF==1 && FULL==1)
{
SBUF=9;
while(TI==0);
TI=0;
}

i=0;
while(RI==0)
{
if(i>=100)
goto timeout;
DelayMs(1);
i++;
}
Rxdata=SBUF;
RI=0;

if(Rxdata==1)
VALVE=1;
else
if(Rxdata==3)
{
VALVE=1;
DelayMs(500);
VALVE=0;
DelayMs(200);
}
else
if(Rxdata==5)
{
VALVE=1;
DelayMs(500);
VALVE=0;
DelayMs(500);
}
else
if(Rxdata<=8)
VALVE=0;
else
VALVE=0;
}
VALVE=0;
}
}

//---------------------------------------
// Delay mS function
//---------------------------------------
void DelayMs(unsigned int count) 
{  // mSec Delay 11.0592 Mhz 
    unsigned int i;		      // Keil v7.5a 
    while(count) {
        i = 115; 			 // 115	exact value
		while(i>0) i--;
        count--;
    }
}

⌨️ 快捷键说明

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