📄 get_digit.c
字号:
/*
----------------------------------------------------------
; (c) Copyright xami All Rights Reserved
----------------------------------------------------------
; SOURCE_FILE: GET_DIGIT.H
; APPLICATION: 80c51\80c52
; DESCRIPTION: 取得键入的六位数的值(用于取得输入的频率)
; AUTHOR: xami
; DATE: 28 Apr. 2007
----------------------------------------------------------
*/
uchar get_digit(void){
uchar key;
/*输入数据:uchar put_digit(void)*/
key= put_digit();
if (key == 0x18) return(key);
/*读取输入的频率结果*/
w= 6; //没有找到小数点,w则为6
for(i= 0;i< 6;i++){ //取得小数点的位置
if(have_p[i]== 1){
w=i;
}
}
/*如果本身没有".",找到第一个"null"字符的前一位,设置该位为带"."位*/
if(w == 6){ //如果没有小数点
j= 0; //标识是否找到过"null"
for(i= 1;i< 6;i++){ //从1位开始(未考虑第一位为"-"号的情况,因为后面对这样的数做了直接置"0"的处理)
if(j== 0){ //还没找到"null"
if(digit_temp[i] == 0x00){
digit_temp[i-1] += 0x80;
have_p[i-1]= 1;
j= 1;
w= i-1;
}
}
}
}
for(i= 0;i< 6;i++){
if(digit_temp[i]== 0x00){ //"null"字符,直接转换成0
digit_temp[i]= 0;
}
}
for(i= 0;i< 6;i++){ //存储为实际的数,(未带小数点的位)
for(j= 0;j<=9;j++){
if(digit_temp[i]== digit[0][j]){
digit_temp[i]= j;
}
}
}
for(j= 0;j<=9;j++){ //存储为实际的数,(带小数点的位)
if(digit_temp[w]== digit[1][j])
digit_temp[w]= j;
}
/*存储实际的频率*/
temp_f= 0; //先清零
//低5位相加
temp_f+= digit_temp[1]*10*10*10*10;
temp_f+= digit_temp[2]*10*10*10;
temp_f+= digit_temp[3]*10*10;
temp_f+= digit_temp[4]*10;
temp_f+= digit_temp[5];
if(digit_temp[0]== 0x40){ //第一位为"-"
temp_f= 0; //置为0
}else{
temp_f+= digit_temp[0]*10*10*10*10*10;
switch (w){ //把单位从 1kHz 转换为 Hz
case 0:{temp_f= temp_f/100;}break;
case 1:{temp_f= temp_f/10;}break;
case 2: break;
case 3:{temp_f= temp_f*10;}break;
case 4:{temp_f= temp_f*100;}break;
case 5:
case 6:{temp_f= temp_f*1000;}break; //没有小数点
default:break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -