?? 113.c
字號:
//WriteWord(Dataloger_I2c_Addr,0X66);
//WriteWord(Dataloger_I2c_Addr+1,0X66);
//WriteWord(Dataloger_I2c_Addr+2,0X66);
Dataloger_start_Addr=Dataloger_I2c_Addr;
WriteWord(90,Dataloger_I2c_Addr/256);
WriteWord(91,Dataloger_I2c_Addr);
//iic start
WriteWord(92,dataloger_no); LCD[8] &=0x08;LCD[9]=0;
com_status=0x00;status1 &=0xfc;}
key_scan=0;button_counter=0; break;
}
while(P3IN==0xFB);
if(memory_ok==0)
{
memory_ok=1;Dataloger_I2c_Addr=1450; //when memory datalogger data is over level, start the new dataloger
LCD[8] &=0x08;LCD[9]=0;
dataloger_no=0;LCD[8] &=0x08;LCD[9]=0;
Dataloger_start_Addr=Dataloger_I2c_Addr;
WriteWord(90,Dataloger_I2c_Addr/256);
WriteWord(91,Dataloger_I2c_Addr);
//iic start
WriteWord(92,dataloger_no);
break;}
if(key_scan!=0)
{
button_counter=0;
if((mem_no>99)||(mem_no<0)){mem_no=0;I2c_Addr=100;}//MEM,FIRST read the no from the 24lcd512
else if(mem_no==99){break;}
else {mem_no++;I2c_Addr=100+(13*(mem_no-1));}
status1 &=0xFc;status1 |=0x01;
LCD[8]=Digit[mem_no/10] &0XFF;LCD[9]=Digit[mem_no%10]|0x08;
for(i=0;i<8;i++){iic_buffer0[i]=ClocK_read_data[i];}
iic_buffer0[8]=mem_no;
iic_buffer0[9]=data_display/100;
iic_buffer0[10]=data_display%100;
iic_buffer0[11]=status0;
iic_buffer0[12]=status1;
for(i=0;i<13;i++) {WriteWord((I2c_Addr+i),iic_buffer0[i]);}
}
break; }//enter/mem
case 0xF7:{
if(NO_HOLD==1) break;
do
{
button_counter++;
delayms(10);
if(button_counter>20)
{
if(Set_Data==0)Set_Data=3;else Set_Data--;
key_scan=0;
button_counter=0;
break;
}
}
while(P3IN==0xF7);
if(key_scan!=0)
{
button_counter=0;
if(setup_status>=0)
{
setup_status--;if(setup_status<0)setup_status=7;
}
if((mode_status!=PMAX) && (mode_status!=PMIN)) {mode_status=PMAX;}
else if(mode_status==PMAX) {mode_status=PMIN;}
else if(mode_status==PMIN){mode_status=GEN;}
}
break;}//peak
case 0xDF:{ if(NO_HOLD==1) break;
do
{
button_counter++;
delayms(10);
if(button_counter>20)
{
if (Set_Data<3)Set_Data++;else Set_Data=0;
key_scan=0;button_counter=0;
break;
}
}
while(P3IN==0xDF) ;
if(key_scan!=0)
{
button_counter=0;
if(setup_status<=7)
{
setup_status++;if(setup_status==8){setup_status=0;}
}
if(mode_status!=REL) {mode_status=REL;rel_data=tmp9;break;}
else {mode_status=GEN;}
}
break;}//rel
case 0xEF:{
if(setup_ok==0) break;
//while(P3IN==0xBF){;}
if(mem_load_ok==0)
{
if(read_mem_no==1) {read_mem_no=1;break;}//MEM,FIRST read the no from the 24lcd512
read_mem_no--;break;
}
if(NO_HOLD==0)
{
lcd_ok=0;status0 |=0x40; LCD[12] |=0X03;NO_HOLD=1;mem_display=data_display;
int i;
for (i=0;i<8;i++){ hold_clock[i]=ClocK_read_data[i]; }
}
else {lcd_ok=1;status0 &=0xBF;NO_HOLD=0;}
key_scan=0;
break;}//hold
case 0xBF:{if((setup_ok==0)||(NO_HOLD==1)) break;
if(mem_load_ok==0)
{
if(read_mem_no==99) {read_mem_no=99;break;}//MEM,FIRST read the no from the 24lcd512
read_mem_no++;break;
}
else if((mode_status!=MAX) && (mode_status!=MIN)) {mode_status=MAX;}
else if(mode_status==MAX) {mode_status=MIN;}
else if(mode_status==MIN) {mode_status=GEN;}
key_scan=0;
break;}//max/min
case 0X7F:{if(NO_HOLD==1) break;
if(Level>=3) {Level=0;}else {Level++;}key_scan=0;break;}//range
case 0xF9:{ int i;
if(NO_HOLD==1) break;
do
{
button_counter++;
delayms(10);
if(button_counter>20)
{
LCD[8] &=0X08; LCD[8] |=0X95;LCD[9]=0X8d; mem_load_ok=1;
for(i=100;i<1450;i++){WriteWord(i,0);}
WriteWord(80,mem_no);
WriteWord(81,read_mem_no);
key_scan=0;button_counter=0;
LCD[8] &=0x08;LCD[9]=0;status1 &=0xFC;break;
}
}
while(P3IN==0xF9) ;
} //clear mem(load+mem)
case 0x7B:{
if(NO_HOLD==1) break;
if(apo_status==0) {apo_status=1;status0|=0x80;}
else {apo_status=0; status0 &=0x7F;}
key_scan=0;
break;}
case 0xFA:
{
int i;if(NO_HOLD==1) break;
if(setup_ok==1)
{
setup_ok=0;lcd_ok=0;setup_status=0;
for(i=0;i<8;i++){Clock_iic_buffer0[i] = ClocK_read_data[i]; }
}
else {setup_ok=1;lcd_ok=1;
for(i=0;i<8;i++){ ClocK_read_data[i]=Clock_iic_buffer0[i];}
Write_Clock(0x8E, ClocK_read_data);}
mode_status=0;Set_Data=0;break;
}
case 0xDC:
{ int i;if(NO_HOLD==1) break;
if(com_status==0x00)
{
if(apo_status==0) apo_status=1;
com_status=0xBB;dataloger_no++;
//Dataloger_I2c_Addr= Dataloger_start_Addr+1;
WriteWord(Dataloger_I2c_Addr,0xaa);
WriteWord(Dataloger_I2c_Addr+1,0x56);
WriteWord(Dataloger_I2c_Addr+2,dataloger_no);
WriteWord(Dataloger_I2c_Addr+3,sampling);
WriteWord(Dataloger_I2c_Addr+4,UNITS);
for(i=0;i<8;i++)
{
WriteWord(Dataloger_I2c_Addr+5+i,ClocK_read_data[i]);
}
Dataloger_I2c_Addr+=13;status1|=0x03;
if(dataloger_no==256) dataloger_no=0;
}
else{
apo_status=0;
Dataloger_start_Addr=Dataloger_I2c_Addr;
WriteWord(90,Dataloger_I2c_Addr/256);
WriteWord(91,Dataloger_I2c_Addr);
//iic start
WriteWord(92,dataloger_no);
LCD[8] &=0x08;LCD[9]=0;
com_status=0x00;status1&=0xfc;}
break;
}
case 0xDB:
{if(NO_HOLD==1) break;
if(mem_load_ok==1) mem_load_ok=0;
else
{
mem_load_ok=1; //read the data in memory
LCD[8] &=0x08;LCD[9]=0; status1 &=0xFC;WriteWord(81,read_mem_no);
}
break;
}
case 0xDA:
{if(NO_HOLD==1) break;
if(Set_Data==0)Set_Data=3;else Set_Data--;
break;
}
case 0xDE:
{if(NO_HOLD==1) break;
if (Set_Data<3)Set_Data++;else Set_Data=0;
break;
}
case 0xF3:
{if(NO_HOLD==1) break;
mode_status=POWEROFF;
}
case 0xEE:
{if(NO_HOLD==1) break;
int i;LCD[8] &=0X08; LCD[8] |=0X95;LCD[9]=0X8d;mem_load_ok=1;
for(i=0;i<1449;i++){WriteWord((100+i),0);}
read_mem_no=1;mem_no=0;
WriteWord(80,mem_no);
WriteWord(81,read_mem_no);
LCD[8] &=0x08;LCD[9]=0;status1 &=0xFC;
break;
}
}
}
//if(P3IN!=0xff) key_scan=0;else key_scan=1;
if(P3IN==0xff) key_scan=1;
pcorder=0;
Read_Clock(0x8F);
if(lcd_ok&&mem_load_ok&&timer_ok)
{
timer_ok=0;
if(mode_status == PMAX || mode_status== PMIN) {souce_data=data_display*1.414;}
else {souce_data=data_display;}
Down_display(data_display);
lcd_display();
}
if(mem_load_ok==0)
{ int j;
//if(read_mem_no==99) {read_mem_no=0;}//MEM,FIRST read the no from the 24lcd512
//read_mem_no++;
{I2c_Addr=100+(13*(read_mem_no-1));}
for(j=0;j<13;j++)
{
iic_readbuffer[j]= ReadWord(I2c_Addr+j);
}
for(j=0;j<8;j++)
{
ClocK_read_data[j]= iic_readbuffer[j];
}
if(ClocK_read_data[4]==0)
{
read_mem_no=read_mem_no-1;
if( read_mem_no<1) read_mem_no=1;
{I2c_Addr=100+(13*(read_mem_no-1));
}
for(j=0;j<13;j++)
{
iic_readbuffer[j]= ReadWord(I2c_Addr+j);
}
for(j=0;j<8;j++)
{
ClocK_read_data[j]= iic_readbuffer[j];
}
}
if(ClocK_read_data[4]==255){
read_mem_no=0;
I2c_Addr=100;
for(j=0;j<13;j++)
{
iic_readbuffer[j]= ReadWord(I2c_Addr+j);delayms(3);
}
for(j=0;j<8;j++)
{
ClocK_read_data[j]= iic_readbuffer[j];delayms(3);
}
}
LCD[8]=Digit[iic_readbuffer[8]/10]&0Xff;LCD[9]=Digit[iic_readbuffer[8]%10]|0x08;
Level=iic_readbuffer[11] & 0x03;
UNITS=iic_readbuffer[11] & 0x04;
mode_status=iic_readbuffer[11] & 0x38;
data_display=iic_readbuffer[9]*100+iic_readbuffer[10];
mem_display=data_display;
Down_display(data_display);
lcd_display();
Display_Lcd_seg(data_display/100);
mem_load_ok=0;status1 &=0xFc;status1 |=0x02;
}
pcorder=0;
IFG2 &=~BTIFG;
}
//------------------------------------------------------------------------------------------
#pragma vector=ADC12_VECTOR
__interrupt void ADC_PROCESS(void)
{
//delayms(3);
//numdata += ADC12MEM0;
length[datacounter]=ADC12MEM0;
datacounter++;
ADC12IE =0X0003; ///enable AD5
ADC12IFG =0X0000;
ADC12CTL0 |= ENC+ADC12SC;
if(datacounter==10)
{
unsigned char u; //排序循環(huán)10次
unsigned char c; //數(shù)組下標(biāo)
int Length_M; //排序用的中間值
unsigned char i;
for(u=0;u<10;u++)
{
for(c=0;c<9-u;c++)
if(length[c]>length[c+1])
{Length_M=length[c];
length[c]=length[c+1];
length[c+1]=Length_M;
}
}
for(i=1;i<9;i++)
{
numdata +=length[i];
}
if(Level==level2)
{
if((real_data=numdata/8)<=1)real_data=0; //28
else {real_data=(numdata-2)/8;} //70
if(real_data<=0) {real_data=0;}
}
else {real_data=numdata/8; }
numdata=0;
datacounter=0;
//tmp9=(int)ad_k*real_data; //放大倍數(shù)
//Down_display(tmp9);
lcd_seg=(int)(real_data)/100;
if((lcd_seg>=40)||(lcd_seg<0)){lcd_seg=40;}
Display_Lcd_seg(lcd_seg);
}
lcd_seg=(int)(real_data)/100;
if((lcd_seg>=40)||(lcd_seg<0)){lcd_seg=40;}
Display_Lcd_seg(lcd_seg);
/*if(Level==level2)
{
if(ADC12MEM0<=3) {ADC12MEM0=0;}
else {ADC12MEM0 -=3;}
}
delay(200);
numdata += ADC12MEM0;
datacounter++;
ADC12IE =0X0003; ///enable AD5
ADC12IFG =0X0000;
ADC12CTL0 |= ENC+ADC12SC;
if(datacounter==80)
{
if(Level==level2){
if((real_data=numdata/80)<5)real_data=0;
else {real_data=(numdata-200)/80;}
if(real_data<=0) {real_data=0;}
}
else {real_data=numdata/80; }
numdata=0;
datacounter=0;
//tmp9=(int)ad_k*real_data; //放大倍數(shù)
//Down_display(tmp9);
lcd_seg=(int)(real_data-25)/100;
if((lcd_seg>=40)||(lcd_seg<0)){lcd_seg=40;}
Display_Lcd_seg(lcd_seg);
}*/
}
//------------------------------------------------------------------------------------------
void setup(void)
{
switch (setup_status)
{
case hour:
{
while(P3IN==0xBF)
{
Clock_iic_buffer0[5]=Clock_iic_buffer0[5]+ 1;
if( Clock_iic_buffer0[5]>0x23) {Clock_iic_buffer0[5]=0; }
if(Clock_iic_buffer0[5]==0x0A)
{Clock_iic_buffer0[5] =0x10;}
else if(Clock_iic_buffer0[5]==0x1A)
{Clock_iic_buffer0[5] =0x20;}
LCD[2]=Digit[Clock_iic_buffer0[5]>>4];
LCD[3]=Digit[Clock_iic_buffer0[5]&0X0F];
LCD[5] |=0X08; LCD[6] |=0X08;
delayms(10);
}
while(P3IN==0xEF)
{
Clock_iic_buffer0[5]=Clock_iic_buffer0[5]-1;
if( Clock_iic_buffer0[5]==0xFF) {Clock_iic_buffer0[5]=0x23;}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -