?? 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 + -