1、具体介绍
本文采用STC89C52单片机来作为控制核心,实现了对温、湿度的检测、光照强度检测,LCD实时显示电路和手机实时监测的硬件电路设计。具体通过温湿度传感器为DHT11,光敏电阻和AD0809芯片,GTM900-B无线通讯模块,实现了环境温度,湿度,光照强度三个参数的采集,存储,显示等功能,并且能实时的发送相应的数据给手机,系统运行可靠,结构简单,性价比高。
2、硬件电路
3、部分代码
#include<reg52.h>
#include"delay.h"
#include"lcd1602.h"
#include"ad0809.h"
#include"DHT11.H"
unsigned char wddata,sddata;
unsigned char ad_d;
unsigned char wenlow=10,wenhig=30;
unsigned char shilow=34,shihig=90;
unsigned char adlow=20,adhig=130;
/////////////////////
sbit k1=P1^4;
sbit k2=P1^5;
sbit k3=P1^6;
sbit k4=P1^7;
unsigned char keyscan();
unsigned char keyscanquick();//¿ì½ÝÊäÈëÓÃÓÚµ÷½Ú·¶Î§
#define ajys 200
/////////////////////
void dis();//ÏÔʾ ÎÂʪ¶È ¹âÕÕ
void jcring();//¼ì²âµç»°µ½À´
void xiugaifanweiandother();//Ð޸ı¨¾¯·¶Î§ÒÔ¼°ÆäËû°´¼ü²Ù×÷
#define Buf_Max 120 //»º´æ³¤¶È120
#define Delay_Time 100 //ÑÓʱ³¤¶È
unsigned char xdata hm[]="18677662985_";
void inithm();//³õʼ ÉèÖõ绰ºÅÂë
void initgsm();//³õʼ»¯GSM
unsigned char i = 0; //¶¨Ò建´æÖ¸Õë
unsigned char xdata Rec_Buf[Buf_Max]; //¶¨Ò建´æÊý×é
void Serial_Init(void); //ÉùÃ÷´®¿Ú³õʼ»¯º¯Êý
void Send_ASCII(unsigned char *b); //ÉùÃ÷·¢ËÍ×Ö·û(ASCIIÂë)º¯Êý
void Delay_ms(unsigned int time); //ÉùÃ÷ÑÓʱº¯Êý
void CLR_Buf(void); //ÉùÃ÷Çå³ý»º´æÄÚÈÝ
void Send_Hex(unsigned char b); //ÉùÃ÷·¢ËÍ×Ö·û(Ê®Áù½øÖÆ)º¯Êý
bit Hand(unsigned char *a); //ÉùÃ÷Åжϻº´æÖÐÊÇ·ñº¬ÓÐÖ¸¶¨µÄ×Ö·û´®º¯Êý
void fasong();//ºÅÂë¼ÓÄÚÈÝ
void CMGS(unsigned char *tel);
void neirong(void);
unsigned int js=0;//ÓÃÓÚ¼Æʱ£¬AD²ÉÑù
unsigned char xdata flag=0;//·¢ËͶÌÐűê־λ ¼ì²â±êÖ¾ ÓÃÓڵȴý ÎÂʪ¶È ¹âÕÕ¼ì²âÎȶ¨ºó²Å¿ªÊ¼ ÅÐ¶Ï ÊÇ·ñ³¬ÏÞ
unsigned char aj;//¼ì²â°´¼ü
unsigned char wz=0;//¼Ç¼°´¼üλÖÃ
void main()
{
lcdinit();
initgsm();//³õʼ»¯GSM
inithm();//³õʼ ÉèÖõ绰ºÅÂë
while(1)
{
js++;
if(js>1000)
{
js=0;
dis();
}
jcring();
xiugaifanweiandother();
}
}
void dis()//ÏÔʾ ÎÂʪ¶È ¹âÕÕ
{
ad_d=initad();
writecom(0xcb);
writedata(ad_d%1000/100+0x30);
writedata(ad_d%100/10+0x30);
writedata(ad_d%10+0x30);
writedata('L');
writedata('x');
read_TRH();
writestr(1,5,str1); //ʪ¶È
writestr(1,0,str2); //ζÈ
if(flag==1 && (ad_d<adlow || ad_d>adhig)) {flag=0;fasong();}
if(flag==1 && (wddata<wenlow || wddata>wenhig)) {flag=0;fasong();}
if(flag==1 && (wddata<wenlow || wddata>wenhig)) {flag=0;fasong();}
}
void xiugaifanweiandother()//Ð޸ı¨¾¯·¶Î§ºÍ°´¼üÆäËû²Ù×÷
{
aj=keyscan();
if(aj==1)
{
//writestr(0,0,"LOW 10 60 100 ");
//writestr(1,0,"HIG 20 80 130 ");
writestr(0,0,"LOW ");
writestr(1,0,"HIG ");
writecom(0x80+6);
writedata(wenlow%100/10+0x30);
writedata(wenlow%10+0x30);
writedata(' ');
writedata(shilow%100/10+0x30);
writedata(shilow%10+0x30);
writedata(' ');
writedata(adlow%1000/100+0x30);
writedata(adlow%100/10+0x30);
writedata(adlow%10+0x30);
writecom(0xc0+6);
writedata(wenhig%100/10+0x30);
writedata(wenhig%10+0x30);
writedata(' ');
writedata(shihig%100/10+0x30);
writedata(shihig%10+0x30);
writedata(' ');
writedata(adhig%1000/100+0x30);
writedata(adhig%100/10+0x30);
writedata(adhig%10+0x30);
writecom(0x80+7);
writecom(0x0f);//´ò¿ªÉÁ˸
while(1)
{
aj=keyscanquick();
if(aj==2)
{
wz=0;
flag=1;
writecom(0x0c);//offÉÁ˸
writecom(0x01);
writestr(0,0,hm);
dis();
break;
}
else if(aj==1)
{
wz++;
if(wz>5) wz=0;
if(wz==0) writecom(0x87);
else if(wz==1) writecom(0x8a);
else if(wz==2) writecom(0x8e);
else if(wz==3) writecom(0xc7);
else if(wz==4) writecom(0xca);
else if(wz==5) writecom(0xce);
}
else if(aj==3)
{
if(wz==0){if(wenlow<wenhig-9) wenlow++;}
else if(wz==1){if(shilow<(shihig-9)) shilow++;}
else if(wz==2){if(adlow<(adhig-30)) adlow++;}
else if(wz==3){if((wenhig)<99) wenhig++;}
else if(wz==4){if((shihig)<99) shihig++;}
else if(wz==5){if((adhig)<250) adhig++;}
writecom(0x80+6);
writedata(wenlow%100/10+0x30);
writedata(wenlow%10+0x30);
writedata(' ');
writedata(shilow%100/10+0x30);
writedata(shilow%10+0x30);
writedata(' ');
writedata(adlow%1000/100+0x30);
writedata(adlow%100/10+0x30);
writedata(adlow%10+0x30);
writecom(0xc0+6);
writedata(wenhig%100/10+0x30);
writedata(wenhig%10+0x30);
writedata(' ');
writedata(shihig%100/10+0x30);
writedata(shihig%10+0x30);
writedata(' ');
writedata(adhig%1000/100+0x30);
writedata(adhig%100/10+0x30);
writedata(adhig%10+0x30);
if(wz==0) writecom(0x87);
else if(wz==1) writecom(0x8a);
else if(wz==2) writecom(0x8e);
else if(wz==3) writecom(0xc7);
else if(wz==4) writecom(0xca);
else if(wz==5) writecom(0xce);
}
else if(aj==4)
{
if(wz==0){if(wenlow>1) wenlow--;}
else if(wz==1){if(shilow>1) shilow--;}
else if(wz==2){if(adlow>1) adlow--;}
else if(wz==3){if((wenhig)>(wenlow+9)) wenhig--;}
else if(wz==4){if((shihig)>(shilow+9)) shihig--;}
else if(wz==5){if((adhig)>(adlow+30)) adhig--;}
writecom(0x80+6);
writedata(wenlow%100/10+0x30);
writedata(wenlow%10+0x30);
writedata(' ');
writedata(shilow%100/10+0x30);
writedata(shilow%10+0x30);
writedata(' ');
writedata(adlow%1000/100+0x30);
writedata(adlow%100/10+0x30);
writedata(adlow%10+0x30);
writecom(0xc0+6);
writedata(wenhig%100/10+0x30);
writedata(wenhig%10+0x30);
writedata(' ');
writedata(shihig%100/10+0x30);
writedata(shihig%10+0x30);
writedata(' ');
writedata(adhig%1000/100+0x30);
writedata(adhig%100/10+0x30);
writedata(adhig%10+0x30);
if(wz==0) writecom(0x87);
else if(wz==1) writecom(0x8a);
else if(wz==2) writecom(0x8e);
else if(wz==3) writecom(0xc7);
else if(wz==4) writecom(0xca);
else if(wz==5) writecom(0xce);
}
}
}
}
void jcring()//¼ì²âµç»°µ½À´
{
if(strstr(Rec_Buf,"RING")!=NULL)
{
CLR_Buf();
Delay_ms(Delay_Time);
Send_ASCII("ATH");
while(!Hand("OK"))
{
Send_ASCII("ATH");Delay_ms(Delay_Time);
}
CLR_Buf();
Delay_ms(Delay_Time);
fasong();
writestr(1,0,"fasong OK");
CLR_Buf(); //Çå³ý»º´æÄÚÈÝ
Delay_ms(Delay_Time); //ÑÓʱ
writecom(0x01);
writestr(0,0,hm);
dis();
}
}
void CMGS(unsigned char *tel)
{
unsigned char code mode[]= {0x41,0x54,0x2B,0x43,0x4D,0x47,0x53,0x3D}; //AT+CMGS=
unsigned int i,j;
ES = 0;
for(i=0;i<8;i++)
{
SBUF=mode[i];
while(TI==0);
TI=0;
}
SBUF=0x22;//ÒýºÅ
while(TI==0);
TI=0;
for(j=0;j<11;j++)
{
SBUF=*tel;
tel++;
while(TI==0);
TI=0;
}
SBUF=0x22;//ÒýºÅ
while(TI==0);
TI=0;
_nop_();
SBUF=0x0D;//»Ø³µ
while(TI==0);
TI=0;
ES = 1;
}
void neirong(void) //·¢Ë͵ÄÄÚÈÝ
{
unsigned char q;
ES=0;
TR0=0;
SBUF=ad_d/100+0x30;
while(TI==0);
TI=0;
SBUF=ad_d%100/10+0x30;
while(TI==0);
TI=0;
SBUF=ad_d%10+0x30;
while(TI==0);
TI=0;
SBUF='L';
while(TI==0);
TI=0;
SBUF='x';
while(TI==0);
TI=0;
SBUF='*';
while(TI==0);
TI=0;
for(q=0;q<5;q++) ///////////////////Êý¾Ý³¤¶È50
{
SBUF=str1[q];
while(TI==0);
TI=0;
}
SBUF='*';
while(TI==0);
TI=0;
for(q=0;q<5;q++) ///////////////////Êý¾Ý³¤¶È50
{
SBUF=str2[q];
while(TI==0);
TI=0;
}
SBUF=0X1A;
while(TI==0);
TI=0;
SBUF=0x0D;//»Ø³µ
while(TI==0);
TI=0;
//SBUF=0x0A;//»»ÐÐ
//while(TI==0);
// TI=0;
ES=1;
TR0=1;
}
void fasong()//ºÅÂë¼ÓÄÚÈÝ
{
writestr(1,0," ");
/*******************************************************************/
CMGS(hm); //·¢Ë͵ĵ绰ºÅÂë
while(!Hand(">"))
{
writecom(0xc0);
writedata(' ');
delay(10000);
writecom(0xc0);
writedata('*');
delay(10000);
}
writecom(0xc0);
writedata('*');
CLR_Buf(); //Çå³ý»º´æÄÚÈÝ
delay(1000);
/*******************************************************************/
neirong();
while(!Hand("OK"))
{
writecom(0xc1);
writedata(' ');
delay(10000);
writecom(0xc1);
writedata('*');
delay(10000);
}
writecom(0xc1);
writedata('*');
CLR_Buf(); //Çå³ý»º´æÄÚÈÝ
delay(10000);delay(10000);
writestr(0,0,hm);
}
void initgsm()//³õʼ»¯GSM
{
Serial_Init();
writecom(0xc0);
writedata('*');
delay(1000);
CLR_Buf(); //Çå³ý»º´æÄÚÈÝ
Delay_ms(Delay_Time); //ÑÓʱ
Send_ASCII("AT"); //·¢ËÍÁª»úÖ¸Áî
while(!Hand("OK")) //ÅжÏÊÇ·ñÎÕÊֳɹ¦,Èç¹û²»³É¹¦ÑÓʱһ»á,ÔÙ·¢ËÍATÎÕÊÖÖ¸Áî
{
Send_ASCII("AT"); //·¢ËÍÁª»úÖ¸Áî
writecom(0xc0);
writedata(' ');
delay(10000);
writecom(0xc0);
writedata('*');
delay(10000);
}
writecom(0xc0);
writedata('*');
CLR_Buf(); //Çå³ý»º´æÄÚÈÝ
Delay_ms(Delay_Time); //ÑÓʱ
Send_ASCII("AT+CMGF=1"); //Îı¾(TEXT)ģʽ
Delay_ms(Delay_Time); //ÑÓʱ
while(!Hand("OK")) //µÈ´ýÉèÖóɹ¦
{
Send_ASCII("AT+CMGF=1"); //Îı¾(TEXT)ģʽ
writecom(0xc1);
writedata(' ');
delay(10000);
writecom(0xc1);
writedata('*');
delay(10000);
}
writecom(0xc1);
writedata('*');
CLR_Buf();
Delay_ms(Delay_Time); //ÑÓʱ
Send_ASCII("AT+CPMS=\"SM\",\"SM\",\"SM\"");//ËùÓвÙ×÷¶¼ÔÚMT(Ä£¿éÖÕ¶Ë)ÖнøÐÐ
Delay_ms(Delay_Time); //ÑÓʱ
while(!Hand("OK")) //µÈ´ýÉèÖóɹ¦
{
Send_ASCII("AT+CPMS=\"SM\",\"SM\",\"SM\"");//ËùÓвÙ×÷¶¼ÔÚMT(Ä£¿éÖÕ¶Ë)ÖнøÐÐ
writecom(0xc2);
writedata(' ');
delay(10000);
writecom(0xc2);
writedata('*');
delay(10000);
}
writecom(0xc2);
writedata('*');
delay(1000);
CLR_Buf(); //Çå³ý»º´æÄÚÈÝ
Delay_ms(Delay_Time); //ÑÓʱ
while(!Hand("OK")) //µÈ´ýÉèÖóɹ¦
{
Send_ASCII("AT+CNMI=2,1");//ÉèÖõ±ÓÐжÌÐŵ½À´Ê±Ìáʾ
writecom(0xc3);
writedata(' ');
delay(10000);
writecom(0xc3);
writedata('*');
delay(10000);
}
writecom(0xc3);
writedata('*');
delay(1000);
CLR_Buf(); //Çå³ý»º´æÄÚÈÝ
Delay_ms(Delay_Time); //ÑÓʱ
writedata(' ');
writedata('I');
writedata('n');
writedata('i');
writedata('t');
writedata('g');
writedata('s');
writedata('m');
writedata('O');
writedata('K');
}
/***************************´®¿Ú³õʼ»¯º¯Êý*****************************/
/*º¯ÊýÔÐÍ:void Serial_Init(void)
/*º¯Êý¹¦ÄÜ:´®¿Ú³õʼ»¯
/*ÊäÈë²ÎÊý:ÎÞ
/*Êä³ö²ÎÊý:ÎÞ
/**********************************************************************/
void Serial_Init(void)//´®¿Ú³õʼ»¯º¯Êý
{
SCON = 0x50;//´®¿Ú:·½Ê½1,ÔÊÐí·¢ËͺͽÓÊÕ
TMOD = 0x20;//¶¨Ê±Æ÷1:ģʽ2,8λ×Ô¶¯ÖØװģʽ,ÓÃÓÚ²úÉú²¨ÌØÂÊ
TH1 = 0xFD; //11.0592MHZ¾§Õñ£¬²¨ÌØÂÊΪ9600
TL1 = 0xFD;
TR1 = 1; //¿ªÆô¶¨Ê±Æ÷1
ES = 1; //¿ªÆô´®¿ÚÖжÏ
EA = 1; //¿ªÆôÈ«¾ÖÖжÏ
}
/****************************´®¿ÚÖжϴ¦Àíº¯Êý**************************/
/*º¯ÊýÔÐÍ:void Serial_Int(void)
/*º¯Êý¹¦ÄÜ:´®¿ÚÖжϴ¦Àí
/*ÊäÈë²ÎÊý:ÎÞ
/*Êä³ö²ÎÊý:ÎÞ
/**********************************************************************/
void Serial_Int() interrupt 4
{
ES = 0; //¹Ø´®¿ÚÖжϣ¬·ÀÖ¹ÖжÏǶÌ×
if(TI) //Èç¹ûÊÇ·¢ËÍÖжϣ¬Ôò²»×öÈκδ¦Àí
{
TI = 0; //Çå³ý·¢ËÍÖжϱê־λ
}
if(RI) //Èç¹ûÊǽÓËÍÖжϣ¬Ôò½øÐд¦Àí
{
RI = 0; //Çå³ý½ÓÊÕÖжϱê־λ
Rec_Buf[i] = SBUF; //½«½ÓÊÕµ½µÄ×Ö·û´®´æµ½»º´æÖÐ
i++; //»º´æÖ¸ÕëÏòºóÒƶ¯
if(i>200) //Èç¹û»º´æÂú,½«»º´æÖ¸ÕëÖ¸Ïò»º´æµÄÊ×µØÖ·
{
i = 0;
}
}
ES = 1; //¿ªÆô´®¿ÚÖжÏ
}
/****************************·¢ËÍ×Ö·û(ASCII)º¯Êý***********************/
/*º¯ÊýÔÐÍ:void Send_ASCII(unsigned char *b)
/*º¯Êý¹¦ÄÜ:·¢ËÍ×Ö·û(ASCIIÂë)
/*ÊäÈë²ÎÊý:unsigned char *b
/*Êä³ö²ÎÊý:ÎÞ
/**********************************************************************/
void Send_ASCII(unsigned char *b)
{
ES = 0; //¹Ø´®¿ÚÖжÏ
for (b; *b!='\0';b++)
{
SBUF = *b;
while(TI!=1); //µÈ´ý·¢ËÍÍê³É
TI = 0; //Çå³ý·¢ËÍÖжϱê־λ
}
ES = 1; //¿ª´®¿ÚÖжÏ
Send_Hex(0x0d); //·¢Ëͻسµ·û
Send_Hex(0x0a); //·¢ËÍ»»Ðзû
}
/****************************time msÑÓʱº¯Êý***************************/
/*º¯ÊýÔÐÍ:Delay_ms(unsigned int time)
/*º¯Êý¹¦ÄÜ:ÑÓʱTime ms
/*ÊäÈë²ÎÊý:time
/*Êä³ö²ÎÊý:ÎÞ
/**********************************************************************/
void Delay_ms(unsigned int time)
{
unsigned char j;
for(;time>0;time--)
{
j = 1500;
while(j--);
}
}
/**************************Çå³ý»º´æÊý¾Ýº¯Êý****************************/
/*º¯ÊýÔÐÍ:void CLR_Buf(void)
/*º¯Êý¹¦ÄÜ:Çå³ý»º´æÊý¾Ý
/*ÊäÈë²ÎÊý:ÎÞ
/*Êä³ö²ÎÊý:ÎÞ
/*µ÷ÓÃÄ£¿é:ÎÞ
/**********************************************************************/
void CLR_Buf(void)
{
unsigned char k;
for(k=0;k<Buf_Max;k++) //½«»º´æÄÚÈÝÇåÁã
{
Rec_Buf[k] = '\0';
}
i = 0; //½ÓÊÕ×Ö·û´®µÄÆðʼ´æ´¢Î»ÖÃ
}
/*************************·¢ËÍ×Ö·û(Ê®Áù½øÖÆ)º¯Êý********************/
/*º¯ÊýÔÐÍ:void Send_Hex(unsigned char c)
/*º¯Êý¹¦ÄÜ:·¢ËÍ×Ö·û(Ê®Áù½øÖÆ)
/*ÊäÈë²ÎÊý:unsigned char c
/*Êä³ö²ÎÊý:ÎÞ
/*µ÷ÓÃÄ£¿é:ÎÞ
/******************************************************************/
void Send_Hex(unsigned char c)
{
ES = 0; //¹Ø´®¿ÚÖжÏ
SBUF = c;
while(TI!=1); //µÈ´ý·¢ËÍÍê³É
TI = 0; //Çå³ý·¢ËÍÖжϱê־λ
ES = 1; //¿ª´®¿ÚÖжÏ
}
/*****************Åжϻº´æÖÐÊÇ·ñº¬ÓÐÖ¸¶¨µÄ×Ö·û´®º¯Êý******************/
/*º¯ÊýÔÐÍ:bit Hand(unsigned char *a)
/*º¯Êý¹¦ÄÜ:Åжϻº´æÖÐÊÇ·ñº¬ÓÐÖ¸¶¨µÄ×Ö·û´®
/*ÊäÈë²ÎÊý:unsigned char *a Ö¸¶¨µÄ×Ö·û´®
/*Êä³ö²ÎÊý:bit 1---º¬ÓÐ 0---²»º¬ÓÐ
/*µ÷ÓÃÄ£¿é:ÎÞ
/*******************************************************************/
bit Hand(unsigned char *a)
{
if(strstr(Rec_Buf,a)!=NULL)
return 1;
else
return 0;
}
void inithm()//³õʼ ÉèÖõ绰ºÅÂë
{
writestr(0,0,hm);
writecom(0x0f); //´ò¿ª¹â±ê
writecom(0x80); //ÏÔʾ¹â±ê³õʼλÖÃ
while(1)
{
aj=keyscan();
if(aj==2)
{
writecom(0x0c); //Òþ²Ø¹â±ê
writecom(0x01);
wz=0;
writestr(0,0,hm);
break;
}
if(aj==1)
{
wz=wz+1;
if(wz==11) wz=0;
writecom(0x80+wz); //ÏÔʾ¹â±ê³õʼλÖÃ
}
if(aj==3)
{
if(wz==0){if(hm[wz]<0x39) hm[wz]++;}
else if(wz==1){if(hm[wz]<0x39) hm[wz]++;}
else if(wz==2){if(hm[wz]<0x39) hm[wz]++;}
else if(wz==3){if(hm[wz]<0x39) hm[wz]++;}
else if(wz==4){if(hm[wz]<0x39) hm[wz]++;}
else if(wz==5){if(hm[wz]<0x39) hm[wz]++;}
else if(wz==6){if(hm[wz]<0x39) hm[wz]++;}
else if(wz==7){if(hm[wz]<0x39) hm[wz]++;}
else if(wz==8){if(hm[wz]<0x39) hm[wz]++;}
else if(wz==9){if(hm[wz]<0x39) hm[wz]++;}
else if(wz==10){if(hm[wz]<0x39) hm[wz]++;}
else if(wz==11){if(hm[wz]<0x39) hm[wz]++;}
writedata( hm[wz] );
writecom(0x80+wz);
}
if(aj==4)
{
if(wz==0){if(hm[wz]>0x30) hm[wz]--;}
else if(wz==1){if(hm[wz]>0x30) hm[wz]--;}
else if(wz==2){if(hm[wz]>0x30) hm[wz]--;}
else if(wz==3){if(hm[wz]>0x30) hm[wz]--;}
else if(wz==4){if(hm[wz]>0x30) hm[wz]--;}
else if(wz==5){if(hm[wz]>0x30) hm[wz]--;}
else if(wz==6){if(hm[wz]>0x30) hm[wz]--;}
else if(wz==7){if(hm[wz]>0x30) hm[wz]--;}
else if(wz==8){if(hm[wz]>0x30) hm[wz]--;}
else if(wz==9){if(hm[wz]>0x30) hm[wz]--;}
else if(wz==10){if(hm[wz]>0x30) hm[wz]--;}
else if(wz==11){if(hm[wz]>0x30) hm[wz]--;}
writedata( hm[wz] );
writecom(0x80+wz);
}
}
}
unsigned char keyscan()
{
if(k1==0)
{
delay(ajys);
{
if(k1==0)
while(k1==0);
return 1;
}
}
else if(k2==0)
{
delay(ajys);
{
if(k2==0)
while(k2==0);
return 2;
}
}
else if(k3==0)
{
delay(ajys);
{
if(k3==0)
while(k3==0);
return 3;
}
}
else if(k4==0)
{
delay(ajys);
{
if(k4==0)
while(k4==0);
return 4;
}
}
else
return 0;
}
unsigned char keyscanquick()//¿ì½ÝÓÃÓÚµ÷½Ú·¶Î§
{
if(k1==0)
{
delay(ajys);
{
if(k1==0)
while(k1==0);
return 1;
}
}
else if(k2==0)
{
delay(ajys);
{
if(k2==0)
while(k2==0);
return 2;
}
}
else if(k3==0)
{
delay(ajys);
{
if(k3==0)
return 3;
}
}
else if(k4==0)
{
delay(ajys);
{
if(k4==0)
return 4;
}
}
else
return 0;
}