#include <stc12c5a.h>
#include <string.h>
#include "hardware.h"
#include "sms.h"
#include "sms.c"
sbit led1 = P1^0;
sbit led2 = P1^1;
sbit led3 = P1^2;
sbit led4 = P1^3;
sbit led5 = P1^4;
sbit led6 = P1^5;
sbit led7 = P1^6;
sbit led8 = P1^7;
uchar idata rbuff[110];
uchar numbuff[]="18392567656";
uchar databuff[]="000000";
uchar rcount;
bit tc35_init_ok;
bit receive_ok;
bit send_error;
bit send_ok;
void initUart(void)
{
TMOD=0x20;
SCON=0x40;
TH1=0xfd;
TL1=0xfd;
REN=1;
TR1=1;
ES=1;
EA=1;
}
void RECEIVE_DATA(void) interrupt 4
{
ES=0;
if(RI)
{
rbuff[rcount++]=SBUF;
RI=0;
}
if((rbuff[rcount-1]==0x0a)&&(rbuff[rcount-2]==0x0d)&&(rbuff[rcount-3]==0x4b)&&(rbuff[rcount-4]==0x4f))
{
receive_ok=1;
}
if((rbuff[rcount-14]=='C')&&(rbuff[rcount-13]=='M')&&(rbuff[rcount-12]=='T')&&(rbuff[rcount-11]=='I'))
{
new_sms=1;
}
else new_sms=0;
if(((rbuff[rcount-17]=='C')&&(rbuff[rcount-16]=='M')&&(rbuff[rcount-15]=='G')&&(rbuff[rcount-14]=='S')&&(rbuff[rcount-4]==0x4f)&&(rbuff[rcount-3]==0x4b)&&(rbuff[rcount-2]==0x0d)&&(rbuff[rcount-1]==0x0a))|((rbuff[rcount-16]=='C')&&(rbuff[rcount-15]=='M')&&(rbuff[rcount-14]=='G')&&(rbuff[rcount-13]=='S')&&(rbuff[rcount-4]==0x4f)&&(rbuff[rcount-3]==0x4b)&&(rbuff[rcount-2]==0x0d)&&(rbuff[rcount-1]==0x0a)))
{
send_ok=1;
}
else send_ok=0;
if((rbuff[rcount-7]=='E')&&(rbuff[rcount-6]=='R')&&(rbuff[rcount-5]=='R')&&(rbuff[rcount-4]=='O')&&(rbuff[rcount-3]=='R'))
{
send_error=1;
}
else send_error=0;
if(rcount>109)rcount=0;
ES=1;
}
uchar KeyScan()
{
uchar cord_l,cord_h;
P0 = 0x0f;
if( (P0 & 0x0f) != 0x0f)
{
delay(5);
if( (P0 & 0x0f) != 0x0f)
{
cord_h = P0 & 0x0f;
P0 = 0xf0;
cord_l = P0 & 0xf0;
while( (P0 & 0xf0) != 0xf0 );
return (cord_l + cord_h);
}
}
return (cord_l + cord_h);
}
void KeyPro()
{
switch( KeyScan() )
{
case 0xee: led1=0;Sendsms("need maintenance\r\n"); break;
case 0xde: Sendsms("loushui\r\n"); break;
case 0xbe: led3=0; break;
case 0x7e: led4=0; break;
case 0xed: led5=0; break;
case 0xdd: led6=0; break;
case 0xbd: led7=0; break;
case 0x7d: led8=0; break;
case 0xeb: led1=0; break;
case 0xdb: led1=0; break;
case 0xbb: led1=0; break;
case 0x7b: led1=0; break;
case 0xe7: P1 = 0xff ;break;
case 0xd7: ; break;
case 0xb7: ; break;
case 0x77: ; break;
}
}
void main(void)
{
uchar times=0;
uchar m=0;
tc35_init_ok=0;
initUart();
Init_tc35();
delay(5000);
delay(5000);
delay(5000);
delay(5000);
while(tc35_init_ok==0)
{
Init_tc35();
delay(4000);
times++;
if(times>15)
{
times=0;
delay(1000);
delay(500);
delay(1000);
delay(4000);delay(4000);delay(4000);
}
}
if(tc35_init_ok)
{
LED=0;
delay(2000);
LED=1;
delay(2000);
LED=0;
}
while(1)
{
KeyPro();
}
}