📄 key.lst
字号:
C51 COMPILER V7.06 KEY 02/05/2005 09:08:15 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE key.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg52.h>
2 #include <stdlib.h>
3 #include <stdio.h>
4 #include <math.h>
5 #include <intrins.h>
6 #include "define.h"
7 #include "function.h"
8
9
10 extern unsigned char key_dms10;
11 bit key_bit_press;
12
13
14
15 // mode enter mode_enter up next mode_down
16 // set esc mode_esc down back mode_up
17 // 0 1 2 3 4 5 6 7 8 9 10
18 // 0 0 1 2 3 4 5 6 7 8 9
19 //unsigned char code key_table[]={0x00,0xa8,0xb8,0xb0,0x0a,0x12,0x22,0x21,0xb2,0x09,0x11}; // for fzq
20 unsigned char code key_table[]={0x00,0x09,0x11,0x21,0x22,0x29,0x2b,0x24,0x0c,0x0a,0x14,0x0d,0x2d}; //
-for cpu
21 unsigned char code key_scan_table[]={0x3e,0x3d,0x3b};
22 unsigned char key_step,key_add_step;
23
24 unsigned char key_scan(void)
25 {
26 1 unsigned char i,j,k;
27 1 k=0;
28 1 i=3;
29 1 while(i){
30 2 i--;
31 2 P2=(P2&0xc0)|key_scan_table[i];
32 2 _nop_();
33 2 j=P2;
34 2 j=(~j)&0x3f;
35 2 if(j&KEY_CONST) k=k|j;
36 2 }
37 1 if(k){
38 2 for(j=0;j<KEY_MAX;j++) {
39 3 if(k==key_table[j]) return (j);
40 3 }
41 2 }
42 1 // 如果没有键按下则清除
43 1 key_dms10=0;
44 1 key_step=0;
45 1 key_bit_press=0;
46 1 key_add_step=0;
47 1 return 0;
48 1 }
49
50
51 //-----------------------------------------
52 //-----------------------------------------
53 unsigned char key_in(void)
54 {
C51 COMPILER V7.06 KEY 02/05/2005 09:08:15 PAGE 2
55 1 unsigned char j;
56 1 j=key_scan();
57 1 if(!j) return 0; // have key_press
58 1 if(!key_bit_press) {
59 2 if((j<9)&&(key_dms10>10)) {
60 3 key_bit_press=1;
61 3 }
62 2
63 2 if(j>8){
64 3 switch(key_step){
65 4 case 0 :
66 4 if(key_dms10>10) {
67 5 key_bit_press=1;
68 5 key_add_step++;
69 5 key_step=1;
70 5 }
71 4 break;
72 4 case 1 :
73 4 if(key_dms10>120) {
74 5 key_bit_press=1;
75 5 key_add_step++;
76 5 key_step=2;
77 5 }
78 4 break;
79 4 case 2:
80 4 if(key_dms10>20) {
81 5 key_bit_press=1;
82 5 if(key_add_step<23) key_add_step++;
83 5 }
84 4 break;
85 4 default: break;
86 4 }
87 3 }
88 2
89 2 return(j);
90 2 }
91 1 else return(0);
92 1 }
93
94 void key_deal(void)
95 {
96 1 unsigned char i;
97 1 i=key_in();
98 1 if(!key_bit_press) return;
99 1 if(!i) return;
100 1 // dis_last_time=0;
101 1 if(GROUND_LED) GROUND_LED=0; // 开背景灯
102 1 switch(i){
103 2 case KEY_MODE:
104 2 mode_sub();
105 2 break;
106 2 case KEY_SET:
107 2 set_sub();//
108 2 break;
109 2 case KEY_ENTER:
110 2 enter_sub();
111 2 break;
112 2 case KEY_ESC:
113 2 esc_sub();
114 2 break;
115 2 case KEY_MODE_ENTER:
116 2 mode_enter_sub();
C51 COMPILER V7.06 KEY 02/05/2005 09:08:15 PAGE 3
117 2 break;
118 2 case KEY_MODE_ESC:
119 2 mode_esc_sub();
120 2 break;
121 2 case KEY_UP:
122 2 up_sub();
123 2 break;
124 2 case KEY_DOWN:
125 2 down_sub();
126 2 break;
127 2 case KEY_NEXT:
128 2 next_sub();
129 2 break;
130 2 case KEY_BACK:
131 2 back_sub();
132 2 break;
133 2 case KEY_MODE_DOWN:
134 2 mode_down_sub();
135 2 break;
136 2 case KEY_MODE_UP:
137 2 mode_up_sub();
138 2 break;
139 2
140 2 default: break;
141 2 }
142 1
143 1 }
144
145
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 273 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -