📄 jiujing.c
字号:
#include<reg51.h>
#include<math.h>
#include<absacc.h>
#include"jiujing.h"
/*********************************************************************************************************/
void main ()
{
init();
CLRDOG=!CLRDOG;
EA = 1;
IT1 = 1;
EX0 = 1;
while(TIME_counter<=2000)
while(1)
{
Sampling_DC();
delay_time(10);
CLRDOG=!CLRDOG;
switch (LED)
{
case 0:
{
P1 = 0Xff;
LED9 = 1;
LED10 = 1;
}break;
case 1:
{
P1 =0Xfe;
LED9 = 1;
LED10 = 1;
delay_time(200);
P1 = 0Xff;
}break;
case 2:
{
P1 =0Xfc;
LED9 = 1;
LED10 = 1;
delay_time(200);
P1 = 0Xff;
}break;
case 3:
{
P1 =0Xf8;
LED9 = 1;
LED10 = 1;
delay_time(200);
P1 = 0Xff;
}break;
case 4:
{
P1 =0Xf0;
LED9 = 1;
LED10 = 1;
delay_time(200);
P1 = 0Xff;
}
case 5:
{
P1 =0Xe0;
LED9 = 1;
LED10 = 1;
delay_time(200);
P1 = 0Xff;
}break;
case 6:
{
P1 =0Xc0;
LED9 = 1;
LED10 = 1;
delay_time(200);
P1 = 0Xff;
}break;
case 7:
{
P1 =0X80;
LED9 = 1;
LED10 = 1;
delay_time(200);
P1 = 0Xff;
}break;
case 8:
{
P1 =0X00;
LED9 = 1;
LED10 = 1;
delay_time(200);
P1 = 0Xff;
}break;
case 9:
{
P1 =0X00;
LED9 = 0;
LED10 = 1;
delay_time(200);
P1 = 0Xff;
LED9 = 1;
}break;
case 10:
{
P1 =0X00;
LED9 = 0;
LED10 = 0;
delay_time(200);
P1 = 0Xff;
LED9 = 1;
LED10 = 1;
}break;
default:break;
}
if(RXD_REDAY==1)
{
if(TIME_counter>255)
{
send(0x1b);
send(23);
RXD_REDAY = 0;
}
send_comm();
RXD_REDAY = 0;
}
}
}
/****************************************************************************************************/
void init()
{
P0 = 0Xff;
P1 = 0Xff;
P2 = 0Xff;
init_comm();
TH0 = 0Xfb;
TL0 = 0X80;
ET0=1;
PX0=1;
return;
}
/**************************************************************************************************/
void Int0() interrupt 0 using 0
{
EX0 = 0;
END = 1;
EX0 = 1;
return;
}
/*************************************************************************************************/
void Timer0() interrupt 1 using 1
{
TH0 = 0X15;
CLRDOG=!CLRDOG;
TL0 = 0xa0;
TIME_counter++;
return;
}
/******************************************************************************************************/
uint Ad574(void)
{
uint ad;
uint Adh,Adl;
END =0;
STARTAD574 = 0;
//while(!END);
Adh = AD574H;
Adl = AD574L;
Adh<<=4;
Adl<<=4;
ad = Adh|Adl;
return(ad);
}
/***************************************************************************************************/
void delay_time(uint k)
{
uchar m,n;
for( m=0;m<k;m++)
{
for(n=0;n<255;n++)
{
}
}
}
/******************************************************************************************************/
void init_comm()
{
TMOD = 0X21;
TH1 = 0Xfd;
TL1 = 0Xfd;
PCON = PCON&0X7f;
SCON =0X40;
REN =1;
TR1 = 1;
ES = 1;
return;
}
/*************************************************************************************************/
void serial() interrupt 4 using 3
{
uchar RXD_buf;
ES =0;
RXD_buf = SBUF;
switch (RXD_number)
{
case 0: if(RXD_buf == 0X1b)
{
RXD_REDAY =1;
RXD_number++;
}
else
{
RXD_number = 0;
}break;
case 1: if((RXD_buf >= 1)&&(RXD_buf<=255))
{
TIME_counter = RXD_buf;
RXD_number = 0;
}
else
{
RXD_number = 0;
TIME_counter = 200;
}break;
default:break;
}
RI = 0;
ES = 1;
return;
}
/****************************************************************************************************/
void send(uchar i)
{
SBUF =i;
while(!TI);
TI = 0;
return;
}
/***************************************************************************************************/
void send_comm()
{
uchar message;
message = 0X1b;
send(message);
message = LED;
send(message);
return;
}
/******************************************************************************************************/
void Sampling_DC(void)
{
uchar i;
int value, r,big[2] = 0,sml = 4096;
DC_END= 0;
while(!DC_END)
{
for(i=0;i<2;i++)
{
r=Ad574();
if( r >= big[i]){ big[i] = r;}
if( r >= sml)
{
DC_END=1;
big[0] = big[1];
}
delay_time(10);
}
if(big[1]<=big[0])
{
DC_END = 1;
}
}
value = big[0];
if((value>0)&&(value<=409))
{
LED=1;
}
if((value>409)&&(value<=818))
{
LED=2;
}
if((value>818)&&(value<=1227))
{
LED=3;
}
if((value>1227)&&(value<=1636))
{
LED=4;
}
if((value>1636)&&(value<=2045))
{
LED=5;
}
if((value>2045)&&(value<=2454))
{
LED=6;
}
if((value>2454)&&(value<=2863))
{
LED=7;
}
if((value>2863)&&(value<=3272))
{
LED=8;
}
if((value>3272)&&(value<=3681))
{
LED=9;
}
if((value>3681)&&(value<=4096))
{
LED=10;
}
else
{
LED =0;
}
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -