📄 put_digit.c
字号:
/*
----------------------------------------------------------
; (c) Copyright xami All Rights Reserved
----------------------------------------------------------
; SOURCE_FILE: PUT_DIGIT.H
; APPLICATION: 80c51\80c52
; DESCRIPTION: 输入数字键的处理
; AUTHOR: xami
; DATE: 28 Apr. 2007
----------------------------------------------------------
*/
uchar put_digit(void){
uchar key;
while((key_pro=keyscan()) != 0x88){ //按下"确认"键退出
if(key_pro==0x28 || key_pro==0x48){ //向上键、向下键 禁止!
show_err();
}else if(key_pro== 0x18){ //处理菜单键
return 0x18;
key= key_pro; //返回菜单键值
return key;
}else{
//------------------------------------------------------------------------------------
//数据输入
//------------------------------------------------------------------------------------
if(key_pro == 0x84){ //如果按"-"键
if(i==0){ //处理第0位
if(digit_temp[0]== 0x40){ //显示"-"时
digit_temp[0]= 0x00;
have_p[0]= 0;
}else if(digit_temp[0]== 0x00){ //"null"
digit_temp[0]= 0x40;
i= 1; //输入"-"号后,当前位后移到第1位
have_p[0]= 0;
}
}else{ //其他位
digit_temp[--i]= 0x00;
have_p[i]= 0;
}
}
else if(key_pro == 0x82){ //如果按"."键
if(i==1){ /*处理第1位*/
if(digit_temp[0] == 0x40){ //第0位为"-"
show_err();
}else{ //第0位不为"-"
if(have_p[0]== 0){ //没加过"."
have_p[0]= 1;
digit_temp[0] += 0x80;
}else{ //加过"."
have_p[0]= 0;
digit_temp[0] -= 0x80;
}
}
}else if(i==0){ /*处理第0位,即还没输入数据时*/
show_err();
}else{ /*第1位以上的处理*/
if(have_p[i-1]== 0){ //上一位没加"."
//其它位已经有"."
if(have_p[0]+have_p[1]+have_p[2]+have_p[3]+have_p[4]+have_p[5] != 0){
show_err();
}else{
have_p[i-1]= 1;
digit_temp[i-1] += 0x80;
}
}else{ //上一位加了"."
have_p[i-1]= 0;
digit_temp[i-1] -= 0x80;
}
}
}
else{ //如果按数字键
switch(key_pro){
case 0x11:{ //0
if(i < 6){
digit_temp[i++]= 0x3F;
}else{
show_err();
}
}break;
case 0x12:{ //1
if(i < 6){
digit_temp[i++]= 0x06;
}else{
show_err();
}
}break;
case 0x14:{ //2
if(i < 6){
digit_temp[i++]= 0x5B;
}else{
show_err();
}
}break;
case 0x21:{ //3
if(i < 6){
digit_temp[i++]= 0x4F;
}else{
show_err();
}
}break;
case 0x22:{ //4
if(i < 6){
digit_temp[i++]= 0x66;
}else{
show_err();
}
}break;
case 0x24:{ //5
if(i < 6){
digit_temp[i++]= 0x6D;
}else{
show_err();
}
}break;
case 0x41:{ //6
if(i < 6){
digit_temp[i++]= 0x7D;
}else{
show_err();
}
}break;
case 0x42:{ //7
if(i < 6){
digit_temp[i++]= 0x07;
}else{
show_err();
}
}break;
case 0x44:{ //8
if(i < 6){
digit_temp[i++]= 0x7F;
}else{
show_err();
}
}break;
case 0x81:{ //9
if(i < 6){
digit_temp[i++]= 0x6F;
}else{
show_err();
}
}break;
default:break;
}
}
//------------------------------------------------------------------------------------
//数据输入
//------------------------------------------------------------------------------------
}//end "while(key_pro==0x28 || key_pro==0x48)"
/*每个while循环显示一次*/
dis_num[4]= digit_temp[0];
dis_num[5]= digit_temp[1];
dis_num[6]= digit_temp[2];
dis_num[7]= digit_temp[3];
dis_num[8]= digit_temp[4];
dis_num[9]= digit_temp[5];
display();
}//end "while((key_pro=keyscan()) != 0x88)"
return 0x88; //返回确认键
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -