×
嵌入式 > 技术百科 > 详情

四个按键对常用数值调整代码

发布时间:2022-05-10 发布时间:
|
  1. /*************************************************************  

  2. **  四个按键数值调整,一个移位,两个加减,一个确定  

  3. **  针对0~65536数值区间,任意数值  

  4. **  light  

  5. **  2012-3-28  

  6. *************************************************************/  

  7. //数值调整结构  

  8. typedef struct _num_cal  

  9. {  

  10.     unsigned int num_temp;      //变量值  

  11.     unsigned int bit;           //位  

  12.     unsigned int bit_max;       //位数  

  13.     unsigned int tmp_bit[5];    //存放各个位值  

  14.   

  15. }num_cal;  

  16. num_cal num_cal_tmp;            //数值调整结构全局变量  

  17.   

  18. /*************************************************************  

  19. **  number_calc  

  20. **  temp_value  : 要调整的值  

  21. **  bit_max     :数据位数  

  22. **  2012-3-28  

  23. *************************************************************/  

  24. void number_calc(unsigned int temp_value,unsigned int bit_max)  

  25. {  

  26.   

  27.     num_cal_tmp.num_temp = temp_value;  

  28.   

  29.     num_cal_tmp.tmp_bit[0] = num_cal_tmp.num_temp%10;  

  30.     num_cal_tmp.tmp_bit[1] = (num_cal_tmp.num_temp%100)/10;  

  31.     num_cal_tmp.tmp_bit[2] = (num_cal_tmp.num_temp%1000)/100;  

  32.     num_cal_tmp.tmp_bit[3] = (num_cal_tmp.num_temp%10000)/1000;  

  33.     num_cal_tmp.tmp_bit[4] = num_cal_tmp.num_temp/10000;  

  34.   

  35.     num_cal_tmp.bit_max = bit_max - 1;  

  36.   

  37. }  

  38. switch (key_value):  

  39. {  

  40.     case key_back:          //移动光标,由低位向高位移动  

  41.         num_cal_tmp.bit++;  

  42.         if( num_cal_tmp.bit > num_cal_tmp.bit_max )  

  43.         {  

  44.             num_cal_tmp.bit = 0;  

  45.         }  

  46.         break;  

  47.     case key_up:            //加  

  48.             num_cal_tmp.tmp_bit[num_cal_tmp.bit]++;  

  49.             if( num_cal_tmp.tmp_bit[num_cal_tmp.bit] > 9)  

  50.             {  

  51.                 num_cal_tmp.tmp_bit[num_cal_tmp.bit] = 0;  

  52.             }  

  53.         break;  

  54.     case key_down:          //减  

  55.             if( num_cal_tmp.tmp_bit[num_cal_tmp.bit] == 0)  

  56.             {  

  57.                 num_cal_tmp.tmp_bit[num_cal_tmp.bit] = 9;  

  58.             }  

  59.             else  

  60.             {  

  61.                 num_cal_tmp.tmp_bit[num_cal_tmp.bit]--;  

  62.             }  

  63.         break;  

  64.     case key_enter:         //确定键  

  65.             temp_value = num_cal_tmp.tmp_bit[4]*10000+num_cal_tmp.tmp_bit[3]*1000+num_cal_tmp.tmp_bit[2]*100+num_cal_tmp.tmp_bit[1]*10+num_cal_tmp.tmp_bit[0];  

  66.         break;  

  67.   

  68.   

  69. }  


 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Keil5(MDK5)在调试(debug)过程中遇到的问题