void kkk_setanalog(unsigned char page,unsigned char offset) { unsigned char mykey=0,i,buffer[4]; unsigned int temp; unsigned int *p=(unsigned int*)SEG_A; WriteChinese(Sheding,0,16,'R'); WriteChinese(Sheding+32,0,32,'R'); temp=Analog[(page+offset)%25]*RATIO; buffer[0]=temp/1000; buffer[1]=temp%1000/100; buffer[2]=temp%100/10; buffer[3]=temp%10; for(i=0;i<4;) { mykey=keyscan(); switch(mykey) { case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: buffer[i]=mykey-1; WriteChar(Ezk+16*(mykey-1+'0'-0x20),2*(offset+1),8*i,'R'); break; case 11:break; case 12: i++; while(mykey==12) { mykey=keyscan(); } break; case 13:break; case 14:break; case 15:break; case 16:return; } delay(500); } temp=(buffer[0]*1000+buffer[1]*100+buffer[2]*10+buffer[3]); Analog[(page+offset)%25]=temp/RATIO; flash_clr(p); flash_write_int16(p++,0x55); for(i=0;i<25;i++) { flash_write_int16(p++,Analog[i]); } }
int record_meter_warning(int type) { /* The warning type should be a value between 0 and 15, specifying the warning type to be recorded in the recoverable failures word in flash. */ /* Don't worry about the time taken to write to flash - we are recording a serious problem! */ flash_write_int16((int *) &(nv_parms.seg_a.s.meter_warnings), nv_parms.seg_a.s.meter_warnings & ~(1 << type)); flash_secure(); return TRUE; }