#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit old=P1^0;//開左門
sbit cld=P1^1;//關左門
sbit ord=P1^2;//開右門
sbit crd=P1^3;//關右門
sbit k1=P2^0;//開關門3次
sbit k2=P2^1;//開關門5次
sbit k3=P2^2;//開關門8次
void delay(uint x);//延時
void test();//左門開關一次右門開關一次
int keypros();//設置開關門次數
void main()//主函數
{
int a,y,b=0;
keypros();//調用按鍵處理函數
a=y;//將上面函數返回值y賦予a
do
{
test();
b++;
}
while(b<a);
}
int keypros()//按鍵處理函數
{
int y;
if(k1==0) //檢測按鍵K1是否按下
{
delay(10); //消除抖動
if(k1==0) //再次判斷按鍵是否按下
{
y=3;
}
while(!k1); //檢測按鍵是否松開
}
if(k2==0) //檢測按鍵K2是否按下
{
delay(10); //消除抖動
if(k2==0) //再次判斷按鍵是否按下
{
y=5;
}
while(!k2); //檢測按鍵是否松開
}
if(k3==0) //檢測按鍵K3是否按下
{
delay(10); //消除抖動
if(k3==0) //再次判斷按鍵是否按下
{
y=8;
}
while(!k3); //檢測按鍵是否松開
}
return(y);
}
void test()//左門開關一次 右門開關一次
{
old=0;
delay(1000);
old=1;
cld=0;
delay(1000);
cld=1;
ord=0;
delay(1000);
ord=1;
crd=0;
delay(1000);
crd=1;
}
void delay(uint x)//延時子函數
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
|