📄 key.lst
字号:
C51 COMPILER V8.12 KEY 05/26/2009 09:07:39 PAGE 1
C51 COMPILER V8.12, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE key.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include<key.h>
3 #include<led.h>
4 #include<start.h>
5 void count(unsigned char x,unsigned char y) //x代表对那个变量的修改,y是数字的值
6 {
7 1 if(x==1)
8 1 {
9 2 if(czhengbujin>99) return;//已经设置完三位数字
10 2 czhengbujin=czhengbujin*10+y;
11 2 if(czhengbujin==0) return;
12 2 a++;
13 2 show(a,b,c,d);
14 2 }
15 1
16 1 else if(x==2)
17 1 {
18 2 if(cfanbujin>99) return;
19 2 cfanbujin=cfanbujin*10+y;
20 2 if(cfanbujin==0) return;
21 2 b++;
22 2 show(a,b,c,d);
23 2 }
24 1 else if(x==3)
25 1 {
26 2 if(czhengjuli>9) return;
27 2 czhengjuli=czhengjuli*10+y;
28 2 c++;
29 2 if(czhengjuli==0) return;
30 2 show(a,b,c,d);
31 2 }
32 1
33 1 else if(x==4)
34 1 {
35 2 if(cfanjuli>9) return;
36 2 cfanjuli=cfanjuli*10+y;
37 2 if(cfanjuli==0) return;
38 2 d++;
39 2 show(a,b,c,d);
40 2 }
41 1 else if(x==5)
42 1 {
43 2 if(csudu>0) return;
44 2 csudu=y;
45 2 if(csudu==0) return;
46 2 show(a,b,c,d);
47 2 }
48 1
49 1 }
50
51 void suduset(void)
52 {
53 1 unsigned char keyword9;
54 1 unsigned char start=0;
55 1 P3_6=0;
C51 COMPILER V8.12 KEY 05/26/2009 09:07:39 PAGE 2
56 1 while(1)
57 1 {
58 2 keyword9 =keyin();
59 2 switch(keyword9)
60 2 {
61 3 case 0x41: count(5,1);break;
62 3 case 0x21: count(5,2);break;
63 3 case 0x11: count(5,3);break;
64 3 case 0x82: count(5,4);break;//数字的设置
65 3 case 0x42: count(5,5);break;
66 3 case 0x22: count(5,6);break;
67 3 case 0x12: count(5,7);break;
68 3 case 0x84: count(5,8);break;
69 3 case 0x44: count(5,9);break;
70 3 case 0x18: start=1; break;
71 3 default:break;
72 3 }
73 2 if(start==1) break;
74 2 }
75 1 startset();
76 1 }
77
78 void delay(void) //去抖处理延迟
79 {
80 1 unsigned int i;
81 1 for(i=12500;i>0;i--);
82 1
83 1 }
84
85 unsigned char keyscan(void) //按键扫描
86 {
87 1 unsigned char b,c,d,m;
88 1 do
89 1 {
90 2
91 2 for(c=0;c<=3;c++)
92 2 {
93 3 if(c==0)
94 3 {
95 4 P1=0xef;
96 4 }
97 3
98 3 else if(c==1)
99 3 {
100 4 P1=0xdf;
101 4 }
102 3
103 3 else if(c==2)
104 3 {
105 4 P1=0xbf;
106 4 }
107 3
108 3 else if(c==3)
109 3 {
110 4 P1=0x7f;
111 4
112 4 }
113 3 m=P1;
114 3 d=~(m)&0x0f;
115 3 b=~(m)&0xff;
116 3 if(d!=0) return(b);
117 3 }
C51 COMPILER V8.12 KEY 05/26/2009 09:07:39 PAGE 3
118 2 }
119 1 while(d==0);
120 1 }
121
122 unsigned char keyin(void) //扫描确定那个键按下,做了按键去抖处理
123 {
124 1 unsigned char t;
125 1 do
126 1 {
127 2 t=keyscan();
128 2 delay();
129 2 }
130 1 while(t!=keyscan());
131 1 return t;
132 1 }
133
134 void first(void)
135 {
136 1 unsigned char keyword1;
137 1 keyword1 =keyin();
138 1 switch(keyword1)
139 1 {
140 2 case 0x24:second_0(); break; //正转步数
141 2 case 0x14:second_1(); break; //反转步数
142 2 case 0x88:second_2(); break; //正转距离
143 2 case 0x48:second_3(); break; //反转距离
144 2 default:break;
145 2 }
146 1
147 1 }
148
149
150
151
152 void second_0(void) //正转步数设置
153 {
154 1
155 1 unsigned char keyword2=0; //获得按键信息
156 1 unsigned char fanzhuanbegin=0;//按下反转设置键标志位
157 1 unsigned char sudu=0; //按下速度键标志位
158 1 P3_2=0;
159 1 if(fanbujin==0)//在此之前并未设置反转
160 1 {
161 2 zhengbujin=1;//设置正传优先标志位
162 2 while(1)
163 2 {
164 3 keyword2 =keyin();
165 3 switch(keyword2)
166 3 {
167 4 case 0x81: count(1,0);break;
168 4 case 0x41: count(1,1);break;
169 4 case 0x21: count(1,2);break;
170 4 case 0x11: count(1,3);break;
171 4 case 0x82: count(1,4);break;//数字的设置
172 4 case 0x42: count(1,5);break;
173 4 case 0x22: count(1,6);break;
174 4 case 0x12: count(1,7);break;
175 4 case 0x84: count(1,8);break;
176 4 case 0x44: count(1,9);break;
177 4 case 0x14: fanzhuanbegin=1; break; //反转步数
178 4 case 0x28: sudu=1;break; //只进行正转设置,开始设置速度
179 4 default:break;
C51 COMPILER V8.12 KEY 05/26/2009 09:07:39 PAGE 4
180 4 }
181 3 if (sudu==1||fanzhuanbegin==1) break;
182 3 }
183 2 if (fanzhuanbegin==1) second_1();
184 2 else if(sudu==1) suduset();
185 2 }
186 1
187 1
188 1
189 1
190 1
191 1 else if(fanbujin==1) //已经设置好反转了,先在开始设置正传
192 1 {
193 2 while(1)
194 2 {
195 3 keyword2 =keyin();
196 3 switch(keyword2)
197 3 {
198 4 case 0x81: count(1,0);break;
199 4 case 0x41: count(1,1);break;
200 4 case 0x21: count(1,2);break;
201 4 case 0x11: count(1,3);break;
202 4 case 0x82: count(1,4);break;
203 4 case 0x42: count(1,5);break; //数字设置
204 4 case 0x22: count(1,6);break;
205 4 case 0x12: count(1,7);break;
206 4 case 0x84: count(1,8);break;
207 4 case 0x44: count(1,9);break;
208 4 case 0x28: sudu=1;break; //正反都以设置完成,设置速度
209 4 default:break;
210 4 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -