📄 consistency_at24c512.lst
字号:
286 1 {
287 2 SystemError=1;
288 2 return;
289 2 }
290 1 iic_stop();
291 1 iic_start();
292 1 value=AT24c64_address|0x01; //发送器件地址
293 1 IICSendByte(value);
294 1 check_ACK();
295 1 if(F0==1)
296 1 {
297 2 SystemError=1;
298 2 return;
299 2 }
300 1 i=length-1;
301 1 while(i--)
302 1 {
C51 COMPILER V8.02 CONSISTENCY_AT24C512 06/20/2007 16:56:01 PAGE 6
303 2 *pdat=IICReceiveByte();
304 2 slave_ACK();//主应答信号
305 2 pdat++;
306 2 }
307 1 *pdat=IICReceiveByte();
308 1 slave_NOACK();//主不应答信号
309 1 iic_stop();
310 1 }
311 //////////////////////////////////
312 delay_tt_ms(uchar tt)//延时TTMS
313 {
314 1 uchar i;
315 1 while(tt--)
316 1 for(i=0;i<125;i++);
317 1 }
318 //调速度函数oid ts_key(void)
319 //调速度函数
320 void ts_key(void)
321 {
322 1 ts=KEY&0xF0;//保留高4位,去掉低4位
323 1 ts=ts>>4;
324 1 if (ts==0||ts==15){ts=1;}
325 1 }
326
327 /*********************延时函数*************
328 函数原型:void dely(ulint timepara);
329 功 能:延时等待,参数timepara为延时时间*/
330 void delay(ulint timepara)
331 {ulint mpara;
332 1 mpara=0;
333 1 do
334 1 {
335 2 mpara=mpara+1;
336 2 }
337 1 while (mpara!=timepara);
338 1 }
339 /*********************延时函数*************
340 函数原型:void dely(ulint timepara);
341 功 能:延时等待,参数timepara为延时时间*/
342 void delays(ulint timepara)
343 {ulint i;
344 1 for(i=0;i<timepara;i++)
345 1 {
346 2 ts_key();
347 2 delay(dpara*ts);//12M ---207---0.010S=10ms
348 2 }
349 1 }
350
351 /*********************595数据锁存函数*************
352 函数原型:void stb_data_595(void);
353 功 能:595数据锁存*/
354 void stb_data_595(void)
355 {
356 1 STB_595=0;
357 1 STB_595=1;
358 1 delay(5);
359 1 STB_595=0;
360 1 }
361
362 /*********************向由低位到高位595发送一个像素的数据函数*************
363 函数原型:send_byte_lsbtomsb(uint8 bt);
364 功 能:向595发送一个像素,参数bt为要发送的数据*/
C51 COMPILER V8.02 CONSISTENCY_AT24C512 06/20/2007 16:56:01 PAGE 7
365 void send_3bit_lsbtomsb( uchar bt1)
366 {
367 1 uint i;
368 1 //SBUF=bt1;
369 1 //if(h_l)bt1=7-bt1;//判断电平有效形式,h_l=0是高电平有效,h_l=1是低电平有效
370 1 if(tset==1)
371 1 {
372 2
373 2 CLK_595 = 0;
374 2 DQ_595 =0;
375 2 CLK_595 = 1;
376 2 }
377 1 for(i=0;i<3;i++)
378 1 {
379 2 CLK_595 = 0;//将时钟线置低
380 2 DQ_595 =(bt1 & 0x01)?1:0;//判断当前位为1还是为0;当为1时将数据线置高;当为0时将数据线置低;
381 2 CLK_595 = 1;//将时钟线置高
382 2 bt1>>=1;//将当前数据右移一位,准备与0x01进行比较
383 2 }
384 1 if(tset==2)
385 1 {
386 2 CLK_595 = 0;
387 2 DQ_595 =0;
388 2 CLK_595 = 1;
389 2 }
390 1 }
391 /*********************向595发送N个某像素的函数*************
392 函数原型:void send_n_byte(n,bt);
393 功 能:向595发送n个bt字节*/
394 void send_n_3bit(register uint k,uchar bt1)
395 { while(k!=0)
396 1 {send_3bit_lsbtomsb(bt1);
397 2 k--;
398 2 }
399 1 }
400
401 /************************************************************************/
402
403 void low_to_hightbit(uchar num)
404 {
405 1 uchar cor_data;
406 1
407 1 cor_data=(num&0x0f);
408 1 send_n_3bit(1,cor_data);
409 1
410 1
411 1 cor_data=num&0xf0;
412 1 cor_data=cor_data>>4;
413 1 send_n_3bit(1,cor_data);
414 1 }
415
416
417 void hight_to_lowbit(uchar num)
418 {
419 1 uchar cor_data;
420 1
421 1 cor_data=num&0xf0;
422 1 cor_data=cor_data>>4;
423 1 send_n_3bit(1,cor_data);
424 1
425 1 cor_data=num&0x0f;
426 1 send_n_3bit(1,cor_data);
C51 COMPILER V8.02 CONSISTENCY_AT24C512 06/20/2007 16:56:01 PAGE 8
427 1 }
428 /*********************串口中断初始化*************/
429 /*设置串行口工作方式1,定时器1作为波特率发生器
430 波特率设置为 2400 ;*/
431 void comm (void)
432 {TMOD=0x20;/*设置定时器T1工作方式2*/
433 1 //TL1=0xff;/*定时器计数初值,1152Bps波特率 115.2KBps*/
434 1 //TH1=0xff;/*定时器重装值*/
435 1 TL1=0xfd;/*定时器计数初值,9600Bps波特率 115.2KBps*/
436 1 TH1=0xfd;/*定时器重装值*/
437 1 EA=1;/*允许总的中断*/
438 1 ES=1;/*允许串行中断*/
439 1 PCON=0x00;/*波特率不倍增*/
440 1 //PCON |=0x80;/*波特率倍增*/
441 1 SCON=0x50;/*设置串口工作方式1,REN = 1 允许接收*/
442 1 TR1=0x01;/*定时器开始工作*/
443 1 }
444
445 /*********************串口中断服务程序*************/
446 void comm_int() interrupt 4 using 2
447 {
448 1 ES=0;/*关闭串行中断*/
449 1 EA=0;
450 1 RI=0;//清除接收标志位
451 1 if(SBUF==0xE5)
452 1 {while(!RI);//等待接收数据
453 2 RI=0;//清除接收标志位
454 2 if(SBUF==0xE5)
455 2 {while(!RI);//等待接收数据
456 3 RI=0;//清除接收标志位
457 3 if(SBUF==0x02)
458 3 {while(!RI);//等待接收数据
459 4 RI=0;//清除接收标志位
460 4 if(SBUF==0x03)
461 4 {while(!RI);//等待接收数据
462 5 RI=0;//清除接收标志位
463 5 if(SBUF==adress)
464 5 {
465 6 //send_fah();//发送应答控制字
466 6 //send_byte(adress);
467 6 //RE_DE=1;/*当前487处于接收状态*/
468 6 arress_botten=0;
469 6 // gen();
470 6 }
471 5 }
472 4 }
473 3 }
474 2 }
475 1 ES=1;EA=1;/*开启串行中断及总中断*/
476 1 }
477
478 void chu(void)
479 {arress_botten=1;
480 1 RE_DE=1;/*当前487处于接收状态*/
481 1 comm();
482 1 while(arress_botten);
483 1 ES=0;
484 1 }
485 /************Z型用字模软件取出的字或图片的颜色及发数据处理函数*************
486
487 功 能:(s型水平安装,左上角进数据)
488
C51 COMPILER V8.02 CONSISTENCY_AT24C512 06/20/2007 16:56:01 PAGE 9
489 ****************************************************************************/
490 void words_z_h_dynamic_left_bottom(void)
491 {
492 1
493 1
494 1 ulint i,j,kt, addr,add=0x00; ////add 为花样数据的首地址
495 1 //stop:
496 1
497 1
498 1 for(i=0;i<1000000000;i++)
499 1 { // addr=m+row*i*wbyte;
500 2 chu();
501 2 for(j=0;j<row;j++)
502 2 {
503 3 addr=add+ i*(wbyte*row) + j*wbyte; //定点采集数据。wbyte*row 为一屏的字节数
504 3 if(addr>=0x0fff0) //24c512总大小为0x0ffff,
505 3 {
506 4 goto pt;
507 4 }
508 3
509 3 AT24c64_read_bytes(addr,dat,wbyte); //读取一行的字节数
510 3 if(dat[0]==0x0ff) // 若碰到填充数0xff则返回,此条件判断仅用于对16进制。
511 3 {goto pt;}
512 3
513 3 for(kt=0;kt<wbyte;kt++) //先高半字节,后发低半字节,连续发一行。
514 3 { hight_to_lowbit(dat[kt]);}
515 3 }
516 2
517 2 stb_data_595();
518 2 //dpara=207/2;
519 2 //delays(10);
520 2 }
521 1 pt:
522 1 RE_DE=1;//当前487处于接收状态
523 1 ES=1;
524 1 delay(1);
525 1
526 1 }
527
528 void fa1(ulint count,cor)
529 {ulint i;
530 1 for(i=0;i<count;i++)
531 1 {
532 2 while(arress_botten);
533 2
534 2 ES=0;
535 2 send_n_3bit(count-i,0);//发底色
536 2 send_n_3bit(i,cor);//发底色
537 2 stb_data_595();
538 2 RE_DE=1;/*当前487处于接收状态*/
539 2
540 2 arress_botten=1;
541 2 ES=1;
542 2 }
543 1 }
544 /****主程序*******************/
545 void main(void)
546 {EN_595=0;
547 1 arress_botten=1;
548 1 RE_DE=1;/*当前487处于接收状态*/
549 1 comm();
550 1 while(arress_botten);
C51 COMPILER V8.02 CONSISTENCY_AT24C512 06/20/2007 16:56:01 PAGE 10
551 1 strat:
552 1 chu();
553 1 AT24c64_address =0xa0;
554 1 words_z_h_dynamic_left_bottom();
555 1 AT24c64_address =0xa2;
556 1 words_z_h_dynamic_left_bottom();
557 1 AT24c64_address =0xa4;
558 1 words_z_h_dynamic_left_bottom();
559 1 AT24c64_address =0xa6;
560 1 words_z_h_dynamic_left_bottom();
561 1 goto strat;
562 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1429 ----
CONSTANT SIZE = 15 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 16 58
IDATA SIZE = 20 2
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 + -