📄 misc.c
字号:
#include "extern.h"
RS232ST Rs232;
void Delay(unsigned char ms)
{
DelayCount=ms;
while(DelayCount) DispChange();
}
void GetKey(void)
{
Key.hz=Key.Code;
Key.Code=0;
}
void gSet(unsigned char st)
{
g.State=st;
// g.Flag.DISP=1;
g.ADTime=0;
g.ms100=0;
}
void Div(unsigned long Div0,unsigned int radix,unsigned char Wei,unsigned char *ptr)
{//Div0 被除数。radix 除数。Wei 小数位数。*ptr 存放结果的地址。
unsigned char uc0;
unsigned int ut;
ut=Div0/radix;
ptr=BinToStr(ut,10,ptr);
*ptr++ ='.';
*ptr='0';
for(uc0=0;uc0<Wei;uc0++){
Div0=Div0%radix;
if(!Div0) break;
Div0*=10;
ut=Div0/radix;
*ptr++=ut+'0';
*ptr=0;
}
*(ptr+uc0)=0;
}
unsigned int Mul(unsigned char *ptr,unsigned int Ref)
{//ptr 指向字符.Ref为进制数.
unsigned int uint[3];
uint[0]=0;
while(*ptr!='.'){
uint[0] *=10;
uint[0] +=*ptr-'0';
ptr++;
}
ptr++;
uint[0] *=Ref;
uint[1]=1;
uint[2]=0;
while(*ptr){
uint[2] *=10;
uint[2] +=*ptr-'0';
uint[1] *=10;
ptr++;
}
uint[2] *=Ref;
uint[2] /=uint[1];
return(uint[0]+uint[2]);
}
unsigned int StrToBin(unsigned char *ptr,unsigned char ch)
{//把一字符串变为二进制.当指针遇见ch时退出.
unsigned int us0;
us0=0;
while(*ptr!=ch){
us0 *=10;
us0+=(*ptr)-'0';
ptr++;
}
return(us0);
}
unsigned char * BinToStr(unsigned long d,unsigned int radix,unsigned char *ptr)
{
unsigned char buf[10];
unsigned char uc1, *q;
q=(unsigned char *)&buf[9];
*q=0;
do{
uc1 = (d % radix) + '0';
if( uc1 > '9' )
uc1+='A'-'0'-10;
*--q = uc1;
} while( d /= radix );
for(;(*ptr++ = *q++););
ptr--;
return (ptr);
}
void StrCopy(unsigned char *to,unsigned char *from)
{
for(;(*to++ = *from++););
}
/*
unsigned int Average(unsigned int *ptr,unsigned char num)
{
unsigned char i,max,min;
unsigned int sum;
max=0;
min=1;
if(ptr[max]<ptr[min]){
max=1;
min=0;
}
for(i=2;i<num;i++){
if(ptr[i]>ptr[max]) max=i;
if(ptr[i]<ptr[min]) min=i;
}
ptr[max]=0;
ptr[min]=0;
sum=0;
for(i=0;i<num;i++){
sum +=ptr[i];
}
i=num-2;
sum /=i;
return(sum);
}
*/
void Rs232Service(void)
{
switch(Rs232.State){
case 0:
PutCh('A');
Rs232.State=1;
case 1:
Rs232.Count=0;
Rs232.Flag.Rx=0;
Rs232.State++;
case 2:
if(!Rs232.Flag.Rx) break;
Rs232.Flag.Rx=0;
Rs232.Buf[Rs232.Count++]=Rs232.Ch;
Rs232.Buf[Rs232.Count]=0;
if(Rs232.Ch==0x0A){
Rs232.State=3;
break;
}
PutCh(Rs232.Ch);
break;
case 3:
for(uc[1]=0;uc[1]<2;uc[1]++) Buf[uc[1]]=Rs232.Buf[uc[1]];
Buf[uc[1]]=0;
uc[2]=StrToBin(Buf,0); //Address.
uc[2] <<=4;
uc[1]=3;
for(uc[0]=0;uc[0]<4;uc[0]++){ //Minmin.
EEPromWrite(uc[2],Rs232.Buf[uc[1]]);
uc[2]++;
uc[1]++;
}
uc[1]=8;
for(uc[0]=0;uc[0]<4;uc[0]++){ //Minmax.
EEPromWrite(uc[2],Rs232.Buf[uc[1]]);
uc[2]++;
uc[1]++;
}
uc[1]=13;
for(uc[0]=0;uc[0]<4;uc[0]++){ //Maxmin.
EEPromWrite(uc[2],Rs232.Buf[uc[1]]);
uc[2]++;
uc[1]++;
}
uc[1]=18;
for(uc[0]=0;uc[0]<4;uc[0]++){ //Maxmax.
EEPromWrite(uc[2],Rs232.Buf[uc[1]]);
uc[2]++;
uc[1]++;
}
Rs232.State=1;
PutCh(Rs232.Ch);
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -