📄 24c02.lst
字号:
277
278
279 595显示函数
280 *****************************************/
281 void In595(ucharm,ucharn)
282 {
283 1
284 1
285 1 uchar i,temp;
286 1
287 1 temp=duan[m];
*** ERROR C202 IN LINE 287 OF 24C02.C: 'm': undefined identifier
288 1 //先传段
289 1 if(n==1);//加小数点
*** ERROR C202 IN LINE 289 OF 24C02.C: 'n': undefined identifier
290 1 temp=temp&0x7f;
291 1 for(i=0;i<8;i++)
292 1 {
293 2
294 2
295 2 SCK=0;
296 2 SER=temp&0x80;
C51 COMPILER V7.01 24C02 02/05/2009 23:38:10 PAGE 6
297 2 temp<<=1;
298 2 SCK=1;
299 2
300 2
301 2 }
302 1 temp=wei[n];
*** ERROR C202 IN LINE 302 OF 24C02.C: 'n': undefined identifier
303 1 //再传位
304 1 for(i=0;i<8;i++)
305 1 {
306 2
307 2
308 2 SCK=0;
309 2 SER=temp&0x80;
310 2 temp<<=1;
311 2 SCK=1;
312 2
313 2
314 2 }
315 1
316 1
317 1 RCK=0;
318 1
319 1
320 1 RCK=1;
321 1 //锁存
322 1 }
323
324
325 /****************************************
326
327
328 TLC0834驱动部分
329 *****************************************/
330 //TLC0834驱动函数
331 //支持最大时钟 600kHz 250kHz--32us完成转换
332 unsigned charTLC0834_Start(bit sgl, bit odd, bit sel)
333 {
334 1
335 1
336 1 unsigned char i;
337 1 unsigned char temp;
338 1
339 1
340 1 ADC_CLK= 0;
341 1 ADC_CS =1;
342 1
343 1
344 1 ADC_CS =0;
345 1 ADC_DIO = 1;
346 1 //发送启动位
347 1 ADC_CLK= 1;
348 1 //_nop_();
349 1
350 1
351 1 ADC_CLK= 0;
352 1 ADC_DIO = sgl;
353 1 //发送
354 1 ADC_CLK= 1;
355 1 //_nop_();
356 1
357 1
C51 COMPILER V7.01 24C02 02/05/2009 23:38:10 PAGE 7
358 1 ADC_CLK= 0;
359 1 ADC_DIO = odd;
360 1 //发送
361 1 ADC_CLK= 1;
362 1 //_nop_();
363 1
364 1
365 1 ADC_CLK= 0;
366 1 ADC_DIO = sel;
367 1 //发送
368 1 ADC_CLK= 1;
369 1 //_nop_();
370 1 ADC_CLK= 0;
371 1 //_nop_();
372 1
373 1
374 1 for(i=8;i>0;i--)
375 1 //发送 8个转换时间脉冲
376 1
377 1
378 1 {
379 2 ADC_CLK= 1;
380 2 //_nop_();
381 2 ADC_CLK= 0;
382 2 //_nop_();
383 2
384 2
385 2 }
386 1
387 1
388 1 for(i=8;i>0;i--)
389 1 //第 12个时钟下降沿,此时数据线上已经发出 LSB信号
390 1
391 1
392 1 {
393 2
394 2
395 2 temp>>= 1;
396 2
397 2
398 2 if(ADC_DIO) temp|= 0x80;
399 2
400 2
401 2 ADC_CLK= 1;
402 2
403 2
404 2 ADC_DIO = 1;//先写 1后再读,否则读出的数据不可预期
405 2
406 2
407 2 //_nop_();
408 2
409 2
410 2 ADC_CLK= 0;
411 2
412 2
413 2 }
414 1
415 1
416 1 ADC_CS = 1;
417 1 //结束本次操作
418 1
419 1
C51 COMPILER V7.01 24C02 02/05/2009 23:38:10 PAGE 8
420 1 return(temp);
421 1 }
422
423
424 /****************************************************
425
426 主函数
427 ****************************************************/
428 void main(void)
429 {
430 1
431 1
432 1 bit t=0;
433 1
434 1
435 1 uchar temp;
436 1
437 1
438 1 uchar AD_Data;
439 1
440 1
441 1 TMOD=0x01;
442 1 //定时器 T0的计时方式为 1;
443 1
444 1
445 1 TH0=0xec;
446 1
447 1
448 1 TL0=0x78;
449 1 //5ms定时
450 1
451 1
452 1 TR0=1;
453 1 //启动 T0
454 1
455 1
456 1 ET0=1;
457 1 //容许定时器 T0中断
458 1
459 1
460 1 EA=1;
461 1 //CPU开中断
462 1
463 1
464 1 P2=r(0x02);
465 1 //从 0x02中读出值
466 1
467 1
468 1 while(1)
469 1
470 1
471 1 {
472 2
473 2
474 2 if(k3==0)t=~t;
475 2 //功能键
476 2
477 2
478 2 while(k3==0);
479 2
480 2
481 2 if(k1==0)
C51 COMPILER V7.01 24C02 02/05/2009 23:38:10 PAGE 9
482 2 //加键
483 2
484 2
485 2 {
486 3 if(t==0)P2++;
487 3 if(t==1)P2=P2+10;
488 3 while(k1==0);
489 3 if(P2>0x78)
490 3 P2=0x3c;
491 3
492 3
493 3 }
494 2
495 2
496 2 if(k2==0)
497 2 //减键
498 2
499 2
500 2 {
501 3 if(t==0)P2--;
502 3 if(t==1)P2=P2-10;
503 3 while(k2==0);
504 3 if((P2<0x00)|(P2>0xf5))
505 3 P2=0x3c;
506 3
507 3
508 3 }
509 2
510 2
511 2 temp=P2;
512 2 w(temp,0x02);
513 2 //写 temp到地址 0x02
514 2
515 2
516 2 k[0]=temp%10;
517 2 k[1]=temp/10%10;
518 2 k[2]=temp/100%10;
519 2
520 2
521 2 // k[3]=vot/1000%10;
522 2 // k[4]=vot/10000%10;
523 2 // k[5]=vot/100000%10;
524 2 // k[6]=vot/1000000%10;
525 2 // k[7]=vot/10000000;
526 2
527 2
528 2 AD_Data = TLC0834_Start(1,0,0);
529 2 //单端方式,偶数通道,偶数第一个通道.即 CH0
530 2 If(AD_Data>26)
531 2 //如果输出电流大于 500mA则断开电源
532 2 {
533 3
534 3 P1^3=0;
535 3 //开启继电器,断开电源,输出电压为 0
536 3 }
537 2 }
538 1 }
539
540
541 /***********************************************
542
543
C51 COMPILER V7.01 24C02 02/05/2009 23:38:10 PAGE 10
544 5ms显示一次
545 ************************************************/
546 void t0()interrupt 1
547 {
548 1
549 1 TH0=0xec;
550 1 TL0=0x78;
551 1 for(j=0;j<3;j++)
552 1 {
553 2
554 2
555 2 In595(k[j],j);
556 2 }
557 1 }
C51 COMPILATION COMPLETE. 0 WARNING(S), 8 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -