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

📄 main.lst

📁 这是铁路各工区
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V6.12  MAIN                                                                   11/29/2007 10:36:15 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN F:\YUN\安全牌\安全牌C\MAIN.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE F:\YUN\安全牌\安全牌C\MAIN.C DB SB OE

stmt level    source

   1          
   2          #include "fun.h"
   3          #include "var.h"
   4          void delay(uint i)
   5          {while(i!=0)i--;
   6   1      }
   7          
   8          void kmg(void)
   9          {KMG=0;
  10   1       delay(1);
  11   1       KMG=1;
  12   1      }
  13          
  14          void timejudge(void)
  15          {uchar i;
  16   1       if(binary_realtime.year>99)binary_realtime.year=0;
  17   1       if(binary_realtime.month>12)binary_realtime.month=12;
  18   1       else if(binary_realtime.month==0)binary_realtime.month=1;
  19   1       if(binary_realtime.year%4)i=0;
  20   1       else i=1;
  21   1       if(binary_realtime.day>daytab[i][binary_realtime.month])
  22   1          binary_realtime.day=daytab[i][binary_realtime.month];
  23   1       else if(binary_realtime.day==0)binary_realtime.day=1;
  24   1       if(binary_realtime.hour>23)binary_realtime.hour=23;
  25   1       if(binary_realtime.minute>59)binary_realtime.minute=59;
  26   1       if(binary_realtime.second>59)binary_realtime.second=59;
  27   1      }
  28          
  29          void datejudge(void)
  30          {uchar i;
  31   1       if(binary_24wcxx.year>99)binary_24wcxx.year=0;
  32   1       if(binary_24wcxx.month>12)binary_24wcxx.month=12;
  33   1       else if(binary_24wcxx.month==0)binary_24wcxx.month=1;
  34   1       if(binary_24wcxx.year%4)i=0;
  35   1       else i=1;
  36   1       if(binary_24wcxx.day>daytab[i][binary_24wcxx.month])
  37   1          binary_24wcxx.day=daytab[i][binary_24wcxx.month];
  38   1       else if(binary_24wcxx.day==0)binary_24wcxx.day=1;
  39   1      }
  40          
  41          
  42          /***********************日期计算及校验************************/
  43          //计算出昨天的日期
  44          void yesterday(struct binary *p)
  45          {uchar i;
  46   1       //day>1时
  47   1       if(--p->day)return;
  48   1       //day=1,month>1时
  49   1       if(--p->month)
  50   1       {if(p->year%4)i=0;
  51   2        else i=1;
  52   2        p->day=daytab[i][p->month];
  53   2        return;
  54   2       }
  55   1       //day=1,month=1时
C51 COMPILER V6.12  MAIN                                                                   11/29/2007 10:36:15 PAGE 2   

  56   1       p->day  =31;
  57   1       p->month=12;
  58   1       if(p->year--)return;  //year>0时
  59   1       p->year =99;          //year=0时
  60   1      }
  61          
  62          //累计天数校正
  63          void totaldays(struct binary *p1,struct binary *p2)
  64          {uchar i,j;
  65   1       ulong days1,days2;
  66   1       //p1存储中的日期,换算为天数days1
  67   1       if(p1->year!=0)
  68   1        days1=(ulong)p1->year*365+(p1->year-1)/4+1;
  69   1       for(i=1;i<p1->month;i++)
  70   1       {if(p1->year%4)j=0;
  71   2        else j=1;
  72   2        days1+=daytab[j][i];}
  73   1       days1+=p1->day;
  74   1       //p2实际日期,换算为天数days2
  75   1       if(p2->year!=0)
  76   1        days2=(ulong)p2->year*365+(p2->year-1)/4+1;
  77   1       for(i=1;i<p2->month;i++)
  78   1       {if(p2->year%4)j=0;
  79   2        else j=1;
  80   2        days2+=daytab[j][i];}
  81   1       days2+=p2->day;
  82   1       //days1,days2两者之差即为累计安全天数
  83   1       if(days1<days2)
  84   1       {p1->days+=(days2-days1);}
  85   1       if(days1>days2)
  86   1       {if(p1->days>(days1-days2))
  87   2        p1->days-=(days1-days2);
  88   2        else  p1->days=0;
  89   2       }
  90   1      }
  91          
  92          /*下一天*/
  93          void nextday(uchar hpa)
  94          {struct binary binary_buffer;
  95   1       binary_buffer.year =binary_realtime.year;
  96   1       binary_buffer.month=binary_realtime.month;
  97   1       binary_buffer.day  =binary_realtime.day;
  98   1       if(binary_realtime.hour<18)yesterday(&binary_buffer);
  99   1       if(binary_24wcxx.day  !=binary_buffer.day  ||
 100   1          binary_24wcxx.month!=binary_buffer.month||
 101   1          binary_24wcxx.year !=binary_buffer.year)
 102   1       {totaldays(&binary_24wcxx,&binary_buffer);
 103   2        //只有days的数值是正确的
 104   2        //把昨天或今天的日期赋值给bcd_24wcxx
 105   2        binary_24wcxx.day  =binary_buffer.day;
 106   2        binary_24wcxx.month=binary_buffer.month;
 107   2        binary_24wcxx.year =binary_buffer.year;
 108   2        wr_24wcxx(addrtab[hpa]);
 109   2       }
 110   1      }
 111          
 112          //目标日期加100,目标天数加100
 113          void adddays(struct binary *p)
 114          {uchar i,j;
 115   1       uchar num=100;
 116   1       if(p->year%4)j=0;
 117   1       else j=1;
C51 COMPILER V6.12  MAIN                                                                   11/29/2007 10:36:15 PAGE 3   

 118   1       for(i=(daytab[j][p->month])-(p->day)+1;num>=i;i=daytab[j][p->month])
 119   1       {p->day=1;
 120   2        num-=i;
 121   2        if(++p->month>12)
 122   2        {p->month=1;p->year++;
 123   3         if(p->year%4)j=0;
 124   3         else j=1;
 125   3        }
 126   2       }
 127   1       p->day+=num;
 128   1       p->days+=100;
 129   1      }
 130          
 131          /*下100天*/
 132          void nextdays(uchar hpa)
 133          {struct binary binary_buffer;
 134   1       //取当前日期
 135   1       binary_buffer.year =binary_realtime.year;
 136   1       binary_buffer.month=binary_realtime.month;
 137   1       binary_buffer.day  =binary_realtime.day;
 138   1       if(binary_realtime.hour<18)yesterday(&binary_buffer);
 139   1       //目标日期计算
 140   1       while((binary_buffer.year > binary_24wcxx.year)||
 141   1             (binary_buffer.year ==binary_24wcxx.year &&
 142   1              binary_buffer.month>binary_24wcxx.month)||
 143   1             (binary_buffer.year ==binary_24wcxx.year &&
 144   1              binary_buffer.month==binary_24wcxx.month&&
 145   1              binary_buffer.day  >=binary_24wcxx.day))
 146   1       {adddays(&binary_24wcxx);
 147   2        wr_24wcxx(addrtab[hpa]);
 148   2       }
 149   1      }
 150          /**********************数据转换********************************/
 151          void bcd1_binary_time(void)
 152          {//年、月、日
 153   1       binary_realtime.year =(bcd1_realtime.year >>4)*10+(bcd1_realtime.year &0x0f);
 154   1       binary_realtime.month=(bcd1_realtime.month>>4)*10+(bcd1_realtime.month&0x0f);
 155   1       binary_realtime.day  =(bcd1_realtime.day  >>4)*10+(bcd1_realtime.day  &0x0f);
 156   1       //时,分,秒
 157   1       binary_realtime.hour  =(bcd1_realtime.hour  >>4)*10+(bcd1_realtime.hour  &0x0f);
 158   1       binary_realtime.minute=(bcd1_realtime.minute>>4)*10+(bcd1_realtime.minute&0x0f);
 159   1       binary_realtime.second=(bcd1_realtime.second>>4)*10+(bcd1_realtime.second&0x0f);
 160   1      }
 161          
 162          void binary_bcd1_time(void)
 163          {//年、月、日
 164   1       bcd1_realtime.year =(binary_realtime.year /10<<4)|(binary_realtime.year %10);
 165   1       bcd1_realtime.month=(binary_realtime.month/10<<4)|(binary_realtime.month%10);
 166   1       bcd1_realtime.day  =(binary_realtime.day  /10<<4)|(binary_realtime.day  %10);
 167   1       //时、分、秒
 168   1       bcd1_realtime.hour  =(binary_realtime.hour  /10<<4)|(binary_realtime.hour  %10);
 169   1       bcd1_realtime.minute=(binary_realtime.minute/10<<4)|(binary_realtime.minute%10);
 170   1       bcd1_realtime.second=(binary_realtime.second/10<<4)|(binary_realtime.second%10);
 171   1      }
 172          
 173          void binary_bcd2_time(void)
 174          {//年、月、日
 175   1       bcd2_realtime.yearh =(binary_realtime.year /10)&0x0f;
 176   1       bcd2_realtime.yearl =(binary_realtime.year %10)&0x0f;
 177   1       bcd2_realtime.monthh=(binary_realtime.month/10)&0x0f;
 178   1       bcd2_realtime.monthl=(binary_realtime.month%10)&0x0f;
 179   1       bcd2_realtime.dayh  =(binary_realtime.day  /10)&0x0f;
C51 COMPILER V6.12  MAIN                                                                   11/29/2007 10:36:15 PAGE 4   

 180   1       bcd2_realtime.dayl  =(binary_realtime.day  %10)&0x0f;
 181   1       //时、分、秒
 182   1       bcd2_realtime.hourh  =(binary_realtime.hour  /10)&0x0f;
 183   1       bcd2_realtime.hourl  =(binary_realtime.hour  %10)&0x0f;
 184   1       bcd2_realtime.minuteh=(binary_realtime.minute/10)&0x0f;
 185   1       bcd2_realtime.minutel=(binary_realtime.minute%10)&0x0f;
 186   1       bcd2_realtime.secondh=(binary_realtime.second/10)&0x0f;
 187   1       bcd2_realtime.secondl=(binary_realtime.second%10)&0x0f;
 188   1      }
 189          
 190          void bcd2_binary_time(void)
 191          {//年、月、日
 192   1       binary_realtime.year =bcd2_realtime.yearh *10+bcd2_realtime.yearl;
 193   1       binary_realtime.month=bcd2_realtime.monthh*10+bcd2_realtime.monthl;
 194   1       binary_realtime.day  =bcd2_realtime.dayh  *10+bcd2_realtime.dayl;
 195   1       //时、分、秒
 196   1       binary_realtime.hour  =bcd2_realtime.hourh  *10+bcd2_realtime.hourl;
 197   1       binary_realtime.minute=bcd2_realtime.minuteh*10+bcd2_realtime.minutel;
 198   1       binary_realtime.second=bcd2_realtime.secondh*10+bcd2_realtime.secondl;
 199   1      }
 200          
 201          //二进制转BCD
 202          void binary_bcd(void)
 203          {//年、月、日
 204   1       bcd_24wcxx.yearh =(binary_24wcxx.year /10)&0x0f;
 205   1       bcd_24wcxx.yearl =(binary_24wcxx.year %10)&0x0f;
 206   1       bcd_24wcxx.monthh=(binary_24wcxx.month/10)&0x0f;
 207   1       bcd_24wcxx.monthl=(binary_24wcxx.month%10)&0x0f;
 208   1       bcd_24wcxx.dayh  =(binary_24wcxx.day  /10)&0x0f;
 209   1       bcd_24wcxx.dayl  =(binary_24wcxx.day  %10)&0x0f;
 210   1       //天数
 211   1       bcd_24wcxx.days[0]=(uchar)((binary_24wcxx.days/10000)%10);
 212   1       bcd_24wcxx.days[1]=(uchar)((binary_24wcxx.days/1000 )%10);
 213   1       bcd_24wcxx.days[2]=(uchar)((binary_24wcxx.days/100  )%10);
 214   1       bcd_24wcxx.days[3]=(uchar)((binary_24wcxx.days/10   )%10);
 215   1       bcd_24wcxx.days[4]=(uchar)((binary_24wcxx.days      )%10);
 216   1      }
 217          
 218          //BCD转二进制
 219          void bcd_binary(void)
 220          {//年、月、日
 221   1       binary_24wcxx.year =bcd_24wcxx.yearh *10+bcd_24wcxx.yearl;
 222   1       binary_24wcxx.month=bcd_24wcxx.monthh*10+bcd_24wcxx.monthl;
 223   1       binary_24wcxx.day  =bcd_24wcxx.dayh  *10+bcd_24wcxx.dayl;

⌨️ 快捷键说明

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