📄 main.lst
字号:
189 1 signed int d;
190 1 //clear();
191 1 /* if(crc!=tem[7])
192 1 {
193 1 disple[0]=10;
194 1 disple[1]=10;
195 1 disple[2]=10;
196 1 disple[3]=10;
197 1 if(key_sym==1) disple[5]=1;
198 1 if(key_sym==2) disple[5]=2;
199 1 }
200 1 else*/
201 1 // {
202 1 if(key_sym==1)
203 1 {
204 2 disple[5]=1;
205 2 d=tem[2];
206 2 d=d<<8;
207 2 d=d+tem[1];
208 2 }
209 1 if(key_sym==2)
210 1 {
211 2 disple[5]=2;
212 2 d=tem[4];
213 2 d=d<<8;
214 2 d=d+tem[3];
215 2 }
216 1 if(d<0)
217 1 {
218 2 disple[3]=10; d=abs(d);
219 2 }
220 1 else disple[3]=0x0f;
221 1 d=d/13;
222 1 disple[0]=(char)(d%10);
223 1 d=d/10;
224 1 disple[1]=(char)(d%10);
225 1 disple[2]=(char)(d/10);
226 1 // }
227 1
228 1 }
229
230 void speed(void)
231 {
232 1 signed int d;
233 1 //clear();
234 1 /*if(crc!=tem[7])
235 1 {
236 1 disple[0]=10;
237 1 disple[1]=10;
238 1 disple[2]=10;
239 1 disple[3]=10;
240 1 disple[5]=3;
241 1 }
C51 COMPILER V7.07 MAIN 09/26/2008 11:05:59 PAGE 5
242 1 else*/
243 1 // {
244 1 disple[5]=3;
245 1 d=tem[6];
246 1 d=d<<8;
247 1 d=d+tem[5];
248 1 if(d<0)
249 1 {
250 2 disple[3]=10; d=abs(d);
251 2 }
252 1 else disple[3]=0x0f;
253 1 d=d/34;
254 1 disple[0]=(char)(d%10);
255 1 d=d/10;
256 1 disple[1]=(char)(d%10);
257 1 disple[2]=(char)(d/10);
258 1
259 1 }
260
261
262 void tserial(void) /*宣告串口serial发送副程式*/
263 {
264 1 unsigned char i=4;
265 1 char j;
266 1 char a,b;
267 1 int dat=0;
268 1 for(j=(num-1);j>=0;j--)
269 1 {
270 2 dat=dat+disple[j];
271 2 dat=dat*10;
272 2 }
273 1 dat=dat<<2;
274 1 a=dat&0x00ff;
275 1 b=(dat&0xff00)>>8;
276 1 bufdata[0]=a^b;
277 1 bufdata[1]=b; //gao字节
278 1 bufdata[2]=a; //di字节
279 1 bufdata[3]=0xaa; //aa
280 1
281 1 IE=0x8f;
282 1 {while(i>0)
283 2 {
284 3 i--;
285 3 SBUF=bufdata[i]; /*根据扫描指标到TAB中取ASCII码由SBUF发送出去*/
286 3 while(TI!=1); /*发送完成否?*/
287 3 TI=0; /*是,则清除发送完成旗标TI=0*/
288 3 delay(10);
289 3 }
290 2 }
291 1 IE=0x9f;
292 1 }
293
294 /*--------------------------------------*/
295 void service_int0 () interrupt 1 using 2 /*设定每隔3000us中断扫描一次数码管*/
296 {
297 1 TH0=0xf8; /*每隔4000US扫描一次2000*/
298 1 TL0=0x30;
299 1 if (ptr1==4) ptr1=5; /*ptr1>5表示6个数码管都已经扫描过*/
300 1 P0=(ptr1<<4)|disple[ptr1]; /*将扫描值左移至高4位元再加上资料码*/
301 1 ptr1++; /*扫描指标加1*/
302 1 if(ptr1==6) ptr1=0;
303 1 tim++;
C51 COMPILER V7.07 MAIN 09/26/2008 11:05:59 PAGE 6
304 1 if(tim>160) tim=161;
305 1 } /*返回主程式*/
306
307
308 /********************************************************/
309
310 /*void uartcom1_in1 () interrupt 4 using 1
311 {
312 unsigned char v,i=0;
313 crc=0;
314 while(RI!=1);
315 {
316 RI=0;
317 v=SBUF;
318 if(v==0xaa)
319 {
320 while(RI!=1);
321 bufuart[i]=v;
322 for(i=1;i<8;i++)
323 {
324 while(RI!=1);
325 bufuart[i]=SBUF; /
326 if(i<7) crc^=bufuart[i];
327 RI=0;
328 }
329 }
330 else delay(10);
331 RI=0;
332 }
333 for(i=0;i<8;i++)
334 {
335 tem[i]=bufuart[i];
336 }
337 if(key_sym==1) angle();
338 if(key_sym==2) angle();
339 if(key_sym==3) speed();
340 } */
341 void uartcom1_in1 () interrupt 4 using 1
342 {
343 1 unsigned char i=0;
344 1 crc=0;
345 1 while(RI!=1);
346 1 RI=0;
347 1 bufuart[i]=SBUF;
348 1 if(bufuart[i]==0xaa)
349 1 {
350 2 for(i=1;i<8;i++)
351 2 {
352 3 while(RI!=1);
353 3 bufuart[i]=SBUF;
354 3 if(i<7) crc^=bufuart[i];
355 3 RI=0;
356 3 }
357 2
358 2 for(i=0;i<8;i++)
359 2 {
360 3 tem[i]=bufuart[i];
361 3 }
362 2 /*if(key_sym==1) angle();
363 2 if(key_sym==2) angle();
364 2 if(key_sym==3) speed();*/
365 2 }
C51 COMPILER V7.07 MAIN 09/26/2008 11:05:59 PAGE 7
366 1 else delay(10);
367 1 RI=0;
368 1 }
369 /********************************************************/
370
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 859 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 63 ----
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -