⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lst

📁 64*16的点阵显示
💻 LST
字号:
C51 COMPILER V8.08   MAIN                                                                  03/10/2009 15:02:49 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN Main.OBJ
COMPILER INVOKED BY: D:\软件\单片机\proteus7.1+keil8.08\Keil8.08\C51\BIN\C51.EXE Main.c LARGE BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //========================================================================================
   2          // 程序功能: 读DS1302时间至点阵屏显示
   3          // 硬件平台: 普罗太克UPS状态采集系统
   4          //                       CPU为PIC16F877时, 可以用ICD2来调试, 也可以进行烧写, 但价格较PIC16F74贵
   5          //                       CPU为PIC16F74时, 只能用ICD2来烧写, 但价格便宜
   6          //                       两者的资源差别不是很大, 主要在ROM容量以及AD位数, 详见<<PPIC6C74|16F74|16F877资
   7          //                       对照表.doc>>, 不同的地方用预编译处理
   8          // 软件平台: C51
   9          // 编写时间: 2009-03-02
  10          // 修改时间: 2009-03-02  1、点阵屏上显示的字是反的,将字模选项中取模走向设为逆向 
  11          //                                               2、点阵是从右向左显示,就是第一次送的字会右移至最右端,之后就将最右端
  12          //                                                      的字先行送出.即将for(cCharIndex=0;cCharIndex<8;cCharIndex++)改为
  13          //                              for(cCharIndex=7;cCharIndex>=0;cCharIndex--) 但cCharIndex应定义为char
  14          //           2009-03-03  将点阵显示程序跟ds1302时间程序合并起来,并坐了相应的修改
  15          //                       修改时间显示 点阵屏出现乱码,没有将DS1302的时间存放到显存转为ASCII,
  16          //                                               如:G_ucDiszone[0]=((ucCurtime[2]&0xf0) >> 4+'0') ;
  17          //           2009-03-04  时间运行时.':'以0.5s闪烁时经过一段时间会出现偏离.由于单片机与ds1302的晶振
  18          //                       不同,一段时间后自然就会偏离,之后根据时钟各位秒,每加1秒单片机就开定时,
  19          //                                               每定时到500Ms关定时并作出相应的处理.
  20          //                                                      static uc ucPreSecond=10;  去当前秒的值
  21          //                                                      if((G_ucTime[0]!=ucPreSecond)&&(TR0==0) )    //':’以500的时间闪烁
  22          //                                                      {
  23          //                                                              TR0=1;
  24          //                                                              G_b500mS=0;
  25          //                                                      }//if
  26          //                                                      if( G_b500mS==0 )
  27          //                                                      {
  28          //                                                              G_ucDiszone[5]=':';
  29          //                                              }//if
  30          //                                                      else
  31          //                                                      {
  32          //                                                              TR0=0;
  33          //                                                              G_ucDiszone[5]=' ';
  34          //                                                              ucPreSecond=G_ucTime[0];
  35          //                                                      }//else
  36          
  37          //                       2009-03-08  为什么(<<4)!=(*16)?  send(tab[(G_ucDiszone[a]-'0')<<4+ucRow])与send(tab[(G_ucDiszone[a]-
             -'0')*16+ucRow])
  38          //                                               现象不同,原因是C语言中运算指令有优先级别,上句中没有加括号,是先运行+再运行<<
  39          //                                               因此就出现错误,将其改为send(tab[((G_ucDiszone[a]-'0')<<4)+ucRow]);
  40          
  41          //                       2009-03-09      时间运行且':'闪烁时,P0口所对应的其他点阵屏中的二极管会有微亮现象。将时间显示屏蔽后单独

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -