⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 get_digit.c

📁 在8052下实现电平电压测试功能,自己开发的单片系统
💻 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 + -