#include <STC12C5204AD.H>
#define uchar unsigned char
#define uint unsigned int
void Delay(uint nTime);
//void send_flag(uint flag);
void send_byte(uint res);
unsigned int i = 0xFF,i0=0xFF,j=0x01,j0=0x01;
uint ADC_COUNT = 0x80;
sbit p37 = P3^7;
sbit p35 = P3^5;
sbit p34 = P3^4;
sbit p33 = P3^3;
sbit p32 = P3^2;
// sbit p17 = P1^7;
sbit p16 = P1^6;
sbit p15 = P1^5;
sbit p14 = P1^4;
sbit p13 = P1^3;
sbit p12 = P1^2;
sbit p11 = P1^1;
sbit p10 = P1^0;
void main (void)
{
EA = 0; PT0 = 0;
ET0 = 0;
IT0 = 0;IT1 = 0;
EX0 = 0;EX1 = 0;
TCON = 0X08;
TMOD = 0X21;
TL1 = 0XC4;
TH1 = 0XC4;
p10=0;
p11=0;
p12=0;
p13=0;
p14=0;
p15=0;
p16=0;
// p17=0;
p32=0;
p33=0;
p34=0;
p35=0;
p37=0;
//串口设置
AUXR = 0xFF;
SCON = 0x50;
PCON = 0x80;
IE = 0;
IP = 0;
//开定时器
TR1 = 1;
TR0 = 1;
TI = 1;
//ADC_POWER_ON:
ADC_CONTR = 0x80;
Delay(32);
//设io为开漏
P1M1 = ADC_COUNT;
P1M0 = ADC_COUNT;
//设置adc通道
ADC_CONTR =0xE7;
Delay(5);
//p32=0 快速 p32=1 慢速 p33=0 默认功能 p33=1 第二功能
while(1)
{
//获取ad的转化值
ADC_RES = 0 ;
ADC_CONTR |= 0x08;
// WAI_AD_FINISH:
while((ADC_CONTR & 0x10) == 0){}
ADC_CONTR &= 0xE7;
j = ADC_RES;
j = j>> 2;
j += 0xC0;
// p17=j;
if(j0!=j)
{ j0=j;
send_byte(j0);
} //发送数据
if(p11==0&&p12==0&&p13==0&&p14==0&&p15==0&&p16==0&&p34==0&&p35==0&&p37==0&&p10==0)
i=0xFF;
//-------------------->>>>>>>>>>>>>>默认功能 手动<<<<<<<<<<----------------------
if(p33==0)
{
if(p12==1)
{if(p32 ==1)
i=0x21; //第二层推板前进
else i = 0x12; //前进
}
if(p10==1)
{
if(p32 == 1)
i=0x22; //第二层推板后退
else i = 0x10; //后退
}
/* if(p37==1)
{if(p32 ==1)
i=0x73; //横向左
else i = 0x37; //向左旋转
}
if(p11==1)
{
if(p32 == 1)
i=0x88; //横向右
else i = 0x11; //向右旋转
} */
if(p13==1)
{
if(p32 == 1)
i=0x31; //第一层
else i = 0x13; //
}
/* if(p16==1)
{
if(p32 == 1)
i=0x61; //第二层
else i = 0x16; //
}
if(p34==1)
{
if(p32 == 1)
i=0x43; //第三层
else i = 0x34; //
}
if(p35==1)
{
if(p32 == 1)
i=0x53; //金顶层
else i = 0x35; //
} */
if(p14==1)
{
if(p32 == 1)
i=0x41; //下降
else i = 0x14; //上升
}
/*if(p15==1)
{
if(p32 == 1)
i=0x51; //倾倒
else i = 0x15; //
} */
if(i0!=i)
{ i0=i;
send_byte(i0);
} //发送数据
}
//--------------------->>>>>>>>>>>>>>>>切换自动功能<<<<<<<<<<<<<<<<-------------------------------------------
if(p33==1) //第二功能
{
if(p13==1) //执行第一步
i=0x1;
if(p16==1) //执行第二步
i=0x2;
if(p34==1) //
i=0x3;
if(p35==1) //
i=0x4;
if(p14==1)
i=0x5;
if(p15==1)
i=0x6;
if(p12==1)
i=0x7;
if(p37==1)
i=0x8;
if(p11==1)
i=0x9;
if(p10==1)
i=0xA;
if(i0!=i)
{ i0=i;
send_byte(i0);
} //发送数据
}
}
}
void Delay(uint nTime)
{
int ii,jj,kk;
for ( ii=0;ii<nTime;ii++ )
for ( jj=0;jj<200;jj++ )
for ( kk=0;kk<249;kk++ ) ;
}
/*void send_flag(uint flag)
{
SBUF = flag;
while(TI == 0);
TI = 0;
SBUF = flag;
while(TI == 0);
TI = 0;
} */
void send_byte(uint res)
{
SBUF = res;
while(TI == 0);
TI = 0;
}