📄 csy.lst
字号:
251 2 case(1):ch1=1;break;
252 2 case(2):ch1=2;break;
253 2 case(3):ch1=3;break;
254 2 case(4):ch1=4;break;
255 2 case(5):ch1=5;break;
256 2 case(6):ch1=6;break;
257 2 case(7):ch1=7;break;
258 2 case(8):ch1=8;break;
259 2 case(9):ch1=9;break;
260 2 default:break;
261 2 }
262 1 return(ch1);
263 1 }
264 /*----------------------------------------------------
265 * delay N count c里的一个while语句相当于汇编里的一个DJNZ语句,即两个机器周期
266 *----------------------------------------------------*/
267 void Delay_Count (unsigned char Count ) //延时时间为:(Count*2+5)*0.362 us
268 {
269 1 while(--Count);
270 1 }
271
272
273 /*----------------------------------------------------
274 * HEX->BCD查表程序,小数部分
275 *----------------------------------------------------*/
276 unsigned char hextobcd1(unsigned char tab)
277 {
278 1 unsigned int tab1;
279 1 switch(tab)
280 1 {
281 2 case(0x00): tab1=0x000; break;
282 2 case(0x01): tab1=0x001; break;
283 2 case(0x02): tab1=0x001; break;
284 2 case(0x03): tab1=0x002; break;
285 2 case(0x04): tab1=0x003; break;
286 2 case(0x05): tab1=0x003; break;
287 2 case(0x06): tab1=0x004; break;
288 2 case(0x07): tab1=0x004; break;
289 2 case(0x08): tab1=0x005; break;
290 2 case(0x09): tab1=0x006; break;
291 2 case(0x0A): tab1=0x006; break;
292 2 case(0x0B): tab1=0x007; break;
293 2 case(0x0C): tab1=0x008; break;
294 2 case(0x0D): tab1=0x008; break;
295 2 case(0x0E): tab1=0x009; break;
296 2 case(0x0F): tab1=0x009; break;
297 2
298 2 default: tab1=0x00;break;
299 2 }
300 1 return(tab1);
301 1 }
302
303 /*----------------------------------------------------
C51 COMPILER V7.06 CSY 11/07/2007 17:19:43 PAGE 6
304 * start Reset Pulse
305 ----------------------------------------------------*/
306 void tmreset(void)
307 {
308 1 TMDAT=0;
309 1 Delay_Count(255);
310 1 Delay_Count(255);
311 1 Delay_Count(255);
312 1 Delay_Count(255);
313 1 TMDAT=1;
314 1 Delay_Count(70);
315 1 while(TMDAT);
316 1 // printf("已调用完判忙函数3\r\n");
317 1 while(~TMDAT);
318 1 // printf("已调用完判忙函数2\r\n");
319 1 Delay_Count(255);
320 1
321 1 }
322
323
324 /*----------------------------------------------------
325 * start Reset Pulse
326 ----------------------------------------------------/
327 void tmreset()
328 {
329
330 // P0=0xfe;
331
332 // FLAG1=0;
333 TMDAT=1;
334 Delay_Count(1); //2.5us
335 TMDAT=0;
336 Delay_Count(250); //505us
337 Delay_Count(250); //505us
338 Delay_Count(250); //505us
339 TMDAT=1;
340 Delay_Count(28); //61us
341 Delay_Count(28); //61us
342 Delay_Count(28); //61us
343 while(TMDAT);
344
345 // printf("初始化成功\n");
346 while(~TMDAT);
347 //printf("初始化成功1\n");
348 Delay_Count(110); //225us
349 Delay_Count(110); //225us
350 Delay_Count(110); //225us
351
352 }
353
354 /*----------------------------------------------------
355 * Read a bit from 1820
356 *----------------------------------------------------*/
357 bit tmrbit(void)
358 {
359 1 int i=0;
360 1 bit dat;
361 1 TMDAT=0;
362 1 _nop_();
363 1 _nop_();
364 1 _nop_();
365 1
C51 COMPILER V7.06 CSY 11/07/2007 17:19:43 PAGE 7
366 1 _nop_();
367 1 _nop_();
368 1 _nop_();
369 1
370 1 _nop_();
371 1 _nop_();
372 1 _nop_();
373 1
374 1 _nop_();
375 1 _nop_();
376 1 _nop_();
377 1 TMDAT=1;
378 1 _nop_();
379 1
380 1 _nop_();
381 1
382 1 _nop_();
383 1
384 1 _nop_();
385 1 dat = TMDAT;
386 1 Delay_Count(30);
387 1
388 1 Delay_Count(30);
389 1
390 1 Delay_Count(30);
391 1
392 1 Delay_Count(30);
393 1 TMDAT=1;
394 1 return dat;
395 1 }
396 /*----------------------------------------------------
397 * Read a byte from 1820
398 *----------------------------------------------------*/
399 unsigned char tmrbyte()
400 {
401 1 unsigned char i,j,dat=0;
402 1 for(i=1;i<=8;i++)
403 1 {
404 2 j=tmrbit();
405 2 dat=(j<<7)|(dat>>1);
406 2 }
407 1 return dat;
408 1 }
409 /*----------------------------------------------------
410 * Write a byte from 1820
411 *----------------------------------------------------*/
412 void tmwbyte(unsigned char dat)
413 {
414 1 unsigned char i;
415 1 for(i=0;i<8;i++)
416 1 {
417 2 TMDAT=0;
418 2 _nop_();
419 2 _nop_();
420 2 _nop_();
421 2 _nop_();
422 2
423 2 _nop_();
424 2 _nop_();
425 2 _nop_();
426 2 _nop_();
427 2
C51 COMPILER V7.06 CSY 11/07/2007 17:19:43 PAGE 8
428 2 _nop_();
429 2 _nop_();
430 2 _nop_();
431 2 _nop_();
432 2
433 2 _nop_();
434 2 _nop_();
435 2 _nop_();
436 2 _nop_();
437 2 TMDAT=dat&0x01;
438 2 Delay_Count(20);
439 2 _nop_();
440 2 _nop_();
441 2
442 2 Delay_Count(20);
443 2 _nop_();
444 2 _nop_();
445 2
446 2 Delay_Count(20);
447 2 _nop_();
448 2 _nop_();
449 2
450 2 Delay_Count(20);
451 2 _nop_();
452 2 _nop_();
453 2
454 2 TMDAT=1;
455 2 _nop_();
456 2 _nop_();
457 2
458 2 _nop_();
459 2 _nop_();
460 2
461 2 _nop_();
462 2 _nop_();
463 2
464 2 _nop_();
465 2 _nop_();
466 2 dat>>=1;
467 2 }
468 1 }
469 /*----------------------------------------------------
470 * Main
471 *----------------------------------------------------*/
472 void temp()
473 {
474 1 unsigned char a,b,a2,b2,i,j,cha[6];
475 1 unsigned int w1;
476 1 unsigned int da1,da2;
477 1 float fa1,fa2,fa3;
478 1 while(1)
479 1 {
480 2 tmreset();
481 2 tmwbyte(0x0CC);
482 2 tmwbyte(0x044);
483 2
484 2 tmreset();
485 2 tmwbyte(0x0CC);
486 2 tmwbyte(0x0BE);
487 2
488 2 a=tmrbyte(); //低8位
489 2 b=tmrbyte(); //高8位
C51 COMPILER V7.06 CSY 11/07/2007 17:19:43 PAGE 9
490 2
491 2 a2=a&0x0F;
492 2 w1=hextobcd1(a2); //小数(整型)
493 2
494 2 a2=a&0x0F0;
495 2 a2=a2>>4;
496 2 b2=b&0x00F;
497 2 b2=b2<<4;
498 2 a2=a2|b2;
499 2
500 2 da1=a2/10; //整数部分十位
501 2 da2=a2%10; //整数部分个位
502 2
503 2 cha[0]=' ';
504 2 b2=b&0x0F0;
505 2 if(b2)
506 2 cha[1]='-';
507 2 else
508 2 cha[1]='+';
509 2 cha[2]=inttochar(da1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -