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

📄 lcdw.lst

📁 12864的万年历时钟加上红外遥控的校准
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V9.00   LCDW                                                                  06/09/2013 14:34:38 PAGE 1   


C51 COMPILER V9.00, COMPILATION OF MODULE LCDW
OBJECT MODULE PLACED IN lcdw.OBJ
COMPILER INVOKED BY: D:\Program Files\STC_ISP\C51\BIN\C51.EXE lcdw.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<stc12c5a60s2.h>
   2          #include<ds18b203.h>
   3          #define uchar unsigned char
   4          #define uint unsigned int
   5          //
   6          sbit rs=P1^0;
   7          sbit rw=P1^1;
   8          sbit ee=P1^2;
   9          sbit psb=P1^6;
  10          sbit res = P1^3;
  11          sbit hwx=P3^3;
  12          sbit sound=P1^5;
  13          //
  14          uint n1,n2,yy,dd,aa,mm,bb,tt,xq;
  15          uint num,k;
  16          uint kai,tin=0;
  17          uint itt;
  18          float txx;
  19          uchar ly_disdate[4]={0,0,0,0};
  20          uchar ly_dis[4];                           //显示缓冲
  21          uchar ly_lhj[4];                                        //保存NEC的四个字节数据
  22          bit ly_flag=1;
  23          //
  24          code uchar table3[]={
  25          /*--  调入了一幅图像:E:\单片机\自定义图\22.bmp  --*/
  26          /*--  宽度x高度=16x16  --*/
  27          0x00,0xFF,0x00,0xFC,0x00,0xF0,0x00,0xE0,0x00,0xCC,0x00,0xDE,0x00,0xDE,0x00,0xCC,
  28          0x00,0xE1,0x00,0xF1,0x00,0xF9,0x00,0xF0,0x00,0xF0,0x00,0xE5,0x00,0xFF,0x00,0xFF};
  29          code uchar table4[]={
  30          /*--  调入了一幅图像:E:\单片机\自定义图\33.bmp  --*/
  31          /*--  宽度x高度=16x16  --*/
  32          0xFF,0x00,0x3F,0x00,0x0F,0x00,0x07,0x00,0x33,0x00,0x7B,0x00,0x7B,0x00,0x33,0x00,
  33          0x87,0x00,0x8F,0x00,0x9F,0x00,0x0F,0x00,0x0F,0x00,0xA7,0x00,0xFF,0x00,0xFF,0x00};
  34          code uchar table1[]={
  35          /*--  文字:  三  --*/
  36          /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  37          0x00,0x00,0x00,0x00,0x7F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,
  38          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00};
  39          //
  40          code uchar tab[]="sunrise♀";
  41          code uchar tab2[]="*STUDIO*";
  42          code uchar time0[]="0123456789-. :";
  43          code uchar tab3[]="星期广东海洋大学";
  44          code uchar tab4[]="℃";
  45          code uchar tab5[]="一二人四五六日";
  46          //
  47          void delay(uint i)              //
  48          {
  49   1              while(--i);     
  50   1      }
  51          //
  52          void suspend()             //
  53          {
  54   1              IE=0x8E;
  55   1              IT1=1;
C51 COMPILER V9.00   LCDW                                                                  06/09/2013 14:34:38 PAGE 2   

  56   1              TMOD=0x11;
  57   1              TH0=(65536-50000)/256;
  58   1              TL0=(65536-50000)%256;
  59   1      } 
  60          //
  61          void clock() interrupt 1 using 2         //
  62          {
  63   1              TH0=(65536-50000)/256;
  64   1              TL0=(65536-50000)%256;
  65   1              tt++;
  66   1      }
  67          //
  68          void nian()
  69          {
  70   1              dd=0;
  71   1              yy++;
  72   1              if(yy==13)
  73   1              {
  74   2                      yy=0;
  75   2                      n1++;
  76   2                      if(n1==100)
  77   2                      {
  78   3                              n1=0;
  79   3                              n2++;
  80   3                      }
  81   2              }       
  82   1      }
  83          //
  84          void fuzhi()             //
  85          {       
  86   1              if(tt==20)
  87   1              {
  88   2                      tt=0;
  89   2                      bb++;
  90   2                      if(bb==60)
  91   2                      {
  92   3                              bb=0;
  93   3                              mm++;
  94   3                              if(mm==60)
  95   3                              {
  96   4                                      mm=0;
  97   4                                      aa++;
  98   4                                      if(aa==24)
  99   4                                      {
 100   5                                              aa=0;
 101   5                                              dd++;
 102   5                                              if(yy<=7)
 103   5                                              {
 104   6                                                      if(yy!=2)
 105   6                                                      {
 106   7                                                              if(yy%2==0&&dd==32)
 107   7                                                              {
 108   8                                                                      nian();
 109   8                                                              }
 110   7                                                              if(yy%2!=2&&dd==31)
 111   7                                                              {
 112   8                                                                      nian();   
 113   8                                                              }
 114   7                                                      }
 115   6                                                      else
 116   6                                                      {
 117   7                                                              if(n1%4==0&&dd==30)
C51 COMPILER V9.00   LCDW                                                                  06/09/2013 14:34:38 PAGE 3   

 118   7                                                              {
 119   8                                                                      nian();
 120   8                                                              }
 121   7                                                              if(n1%4!=0&&dd==29)
 122   7                                                              {
 123   8                                                                      nian();
 124   8                                                              }
 125   7                                                      }
 126   6                                              }
 127   5                                              else
 128   5                                              {
 129   6                                                      if(yy%2==0&&dd==32)
 130   6                                                      {
 131   7                                                              nian();
 132   7                                                      }
 133   6                                                      if(yy%2!=0&&dd==31)
 134   6                                                      {
 135   7                                                              nian();
 136   7      
 137   7                                                      }
 138   6                                              }
 139   5                                                      
 140   5                                      }
 141   4                              }
 142   3                      
 143   3                      }
 144   2              }
 145   1      }
 146          //
 147          uint caiji(uchar da)     //
 148          {               
 149   1              da=da%10;
 150   1              return(da);
 151   1      }
 152          //
 153          uint caiji2(uchar da)    //
 154          {
 155   1              da=da/10;
 156   1              return(da);
 157   1      }
 158          //
 159          void wendu()
 160          {
 161   1                      int ltemp;
 162   1                      if(itt==0)
 163   1                              tmpchange();            //温度转换
 164   1                      if(itt==100)
 165   1                      {
 166   2                              txx=tmp()*0.0625;       //得到真实十进制温度值,因为DS18B20
 167   2                                                                      //可以精确到0.0625度,所以读回数据的最低位代表的是0.0625度。
 168   2                              ltemp=txx*10+0.5;       //放大十倍,这样做的目的将小数点后第一位也转换为可显示数字,同时进行一个四舍五入
             -操作。
 169   2      
 170   2                              if(ltemp<0)
 171   2                              {               //判断第一位显示整数还是负号
 172   3                                      ly_dis[0]=10;
 173   3                                      ltemp=0-ltemp;  
 174   3                              }
 175   2                              else
 176   2                              ly_dis[0]=12;//显示百位值
 177   2                              ltemp=ltemp%1000;
 178   2                              ly_dis[1]=ltemp/100;    //显示温度十位值
C51 COMPILER V9.00   LCDW                                                                  06/09/2013 14:34:38 PAGE 4   

 179   2                              ltemp=ltemp%100;
 180   2                              ly_dis[2]=ltemp/10;             //显示温度个位值
 181   2                              ly_dis[3]=ltemp%10;             //显示小数点后一位
 182   2                      }
 183   1                      itt++;
 184   1                      if(itt==3000)
 185   1                              itt=0;
 186   1      }
 187          //
 188          void hongwai() interrupt 2
 189          {
 190   1              uchar i,ia;
 191   1              TL1=0;
 192   1              TH1=0;
 193   1              TR1=1;
 194   1              while(!hwx);
 195   1              TR1=0;
 196   1              if(TH1<30||TH1>40)
 197   1                      return;
 198   1              TH1=0;
 199   1              TR1=1;
 200   1              while(hwx)
 201   1              {
 202   2                      delay(10);
 203   2                      
 204   2                      if(TH1>22)
 205   2                              return;
 206   2              }
 207   1              TR1=0;
 208   1              if(TH1<12)
 209   1                      return;
 210   1              for(i=0;i<4;i++)
 211   1              {
 212   2                              for(ia=0;ia<8;ia++)
 213   2                              {       
 214   3                                      sound=0 ;               
 215   3                                      while(!hwx);    //      
 216   3                                      TH1=0;
 217   3                                      TR1=1;                  //
 218   3                                      while(hwx)
 219   3                                      {
 220   4                                              delay(10);
 221   4                                              if(TH1>15)              
 222   4                                                      return;         
 223   4                                      }
 224   3                                      TR1=0;
 225   3                                      ly_lhj[i]>>=1;                  
 226   3                                      if(TH1>4)                               
 227   3                                              ly_lhj[i]|=0x80;
 228   3                              }
 229   2              }
 230   1              sound=~sound;
 231   1              ly_flag=1;      //接收成功
 232   1              TF1=0;
 233   1      }
 234          //
 235          void choose()
 236          {
 237   1              if(ly_flag)
 238   1                      {                       //接收成功处理显示缓冲,以16进制显示
 239   2                              ly_flag=0;
 240   2                              ly_disdate[2]=ly_lhj[2]/16;
C51 COMPILER V9.00   LCDW                                                                  06/09/2013 14:34:38 PAGE 5   

 241   2                              ly_disdate[3]=ly_lhj[2]%16;
 242   2                              switch(ly_disdate[3])
 243   2                              {       
 244   3                                      case 4:
 245   3                                              aa++;
 246   3                                              if(aa==24)
 247   3                                              {
 248   4                                                      aa=0;
 249   4                                                      dd++;
 250   4                                              }
 251   3                                              break;
 252   3                                      case 0:
 253   3                                              if(ly_disdate[2]==4)
 254   3                                              {
 255   4                                                      mm++;
 256   4                                                      if(mm==60)
 257   4                                                      {
 258   5                                                              mm=0;
 259   5                                                              aa++;
 260   5                                                      }
 261   4                                              }
 262   3                                              break;
 263   3                                      case 2:
 264   3                                              kai=1;
 265   3                                              break;
 266   3                                      case 7:
 267   3                                              yy++;
 268   3                                              if(yy==13)
 269   3                                              {
 270   4                                                      yy=0;
 271   4                                              } 
 272   3                                              break;
 273   3                                      case 5:
 274   3                                              dd++;
 275   3                                              if(dd==32)
 276   3                                              {
 277   4                                                      dd=0;
 278   4                                              }
 279   3                                              break;
 280   3                                      case 6:
 281   3                                              n2++;
 282   3                                              if(n2==100)
 283   3                                              {
 284   4                                                      n2=0;
 285   4                                              }
 286   3                                              break;
 287   3                                      case 9:
 288   3                                              n1++;
 289   3                                              if(n1==100)
 290   3                                              {
 291   4                                                      n1=0;
 292   4                                                      n2++;    
 293   4                                              }
 294   3                                              break;
 295   3                                      default:
 296   3                                              break;
 297   3                              }
 298   2                      }
 299   1      }
 300          //

⌨️ 快捷键说明

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