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

📄 index.lst

📁 万年历数字钟是一种用万年历时钟芯片实现年、月、日、时、分、秒计时
💻 LST
📖 第 1 页 / 共 2 页
字号:
 191   1      }
 192                  
 193          void Tcs(void)          //将时间信号进行BCD译码
 194          {
 195   1              uchar   j,k,H,L;                
 196   1         if(k=0,k<7,k++)
 197   1              {
 198   2             switch(k)
 199   2                 {
 200   3                      case    0:
 201   3                              {
 202   4                                       in[0]=in[0]&0x7f;      //秒的最高位需要屏蔽
 203   4                                       j=in[0];
 204   4                                       L=j&0x0f;
 205   4                                       S1=TAB[L];
 206   4                                       H=j>>4;
 207   4                                       S2=TAB[H];
 208   4                              }
 209   3                      case    1:
 210   3                              {
 211   4                                      in[1]=in[1]&0x7f;       //分的最高为屏蔽
 212   4                                      j=in[1];
 213   4                                      L=j&0x0f;
 214   4                                      MU1=TAB[L];
 215   4                                      H=j>>4;
 216   4                                      MU2=TAB[H];
 217   4                              }
 218   3      
 219   3                       case   2:
 220   3                              {
 221   4                                      in[2]=in[2]&0x3f;       //时的最高为屏蔽
 222   4                                      j=in[1];
 223   4                                      L=j&0x0f;
 224   4                                      H1=TAB[L];
 225   4                                      H=j>>4;
 226   4                                      H2=TAB[H];
 227   4                              }
 228   3                       case   3:
 229   3                              {
 230   4                                      in[3]=in[3]&0x3f;       //日的最高为屏蔽
 231   4                                      j=in[1];
 232   4                                      L=j&0x0f;
 233   4                                      D1=TAB[L];
 234   4                                      H=j>>4;
 235   4                                      D2=TAB[H];
 236   4                              }
 237   3                       case   4:
 238   3                              {
C51 COMPILER V7.06   INDEX                                                                 11/16/2007 20:10:34 PAGE 5   

 239   4                                      in[4]=in[4]&0x07;       //星期的最高为屏蔽
 240   4                                      L=in[4];
 241   4                                      D1=TAB[L];
 242   4                              }
 243   3                       case   5:
 244   3                              {
 245   4                                      in[5]=in[5]&0x1f;       //月的最高为屏蔽
 246   4                                      j=in[1];
 247   4                                      L=j&0x0f;
 248   4                                      M1=TAB[L];
 249   4                                      H=j>>4;
 250   4                                      M2=TAB[H];
 251   4                              }
 252   3                       case   6:                      //年
 253   3                              {
 254   4                                      j=in[1];
 255   4                                      L=j&0x0f;
 256   4                                      Y1=TAB[L];
 257   4                                      H=j>>4;
 258   4                                      Y2=TAB[H];
 259   4                              }
 260   3                         
 261   3                      }
 262   2              }
 263   1      
 264   1      }
 265          
 266          void Init_Device(void)          //初始化单片机和时钟芯片函数
 267          {
 268   1              IE=0x87;                                //开启定时器0和外中断0和外中断1
 269   1              IP=0x03;                                //设置外中断0和定时器0为高优先级
 270   1              TMOD=0x01;                              //设置定时器0为16位定时器模式
 271   1              TH0=0xEC;                               //定时5ms
 272   1              TL0=0x77;
 273   1              LED=0;                                  //LED灯灭
 274   1              write_N_byte(0,0,9,set);   //发送N个字节 CS_I2C为24C02 IC地址
 275   1              TR0=1;                                  //启动定时器0
 276   1      }
 277          
 278          void    Start_ADC0809(void)             //启动0809对温度传感器测量
 279          {
 280   1         ADC_EN=0;                    //输出使能关闭
 281   1         ADC_S=1;
 282   1         _nop_();
 283   1         _nop_();
 284   1         ADC_S=0;
 285   1      }
 286          
 287          void    delay10ms(void)         //延时10ms
 288          {
 289   1              uchar i=100,j=100;
 290   1              while(i--)
 291   1              {
 292   2                      while(j--);
 293   2              }
 294   1      }
 295          
 296          void    KEY(void)                       //按键,调时间和设定闹钟
 297          {
 298   1         if(key1==1)                  //设定时间,未完成
 299   1                {
 300   2                      delay10ms();    //延时10ms
C51 COMPILER V7.06   INDEX                                                                 11/16/2007 20:10:34 PAGE 6   

 301   2                      if(key1==1)
 302   2                              {
 303   3                                      while(key1==0);
 304   3                              }
 305   2                }
 306   1              if(key3==1)                     //设定闹钟,未完成
 307   1                      {
 308   2                              delay10ms();
 309   2                              if(key3==1)
 310   2                              {
 311   3                                      while(key3==0);
 312   3                              }
 313   2      
 314   2                      }
 315   1      }
 316          
 317          uchar transform(uchar i)                //对温度的工程量转换程序
 318          {
 319   1              //比如说当数码为0FFH时的温度是50摄氏度,00H时为负5摄氏度.请按实际情况修改
 320   1              uchar j;
 321   1      //添加实际代码
 322   1              j=i;
 323   1              return j;
 324   1      }
 325          
 326          void    show(void)                      //显示
 327          {
 328   1              P2=Year4;               //最高位显示2
 329   1              P0=TAB[0];
 330   1              _nop_();
 331   1              P2=Year3;               //第二位显示0
 332   1              P0=TAB[0];              
 333   1              _nop_();
 334   1              P2=Year2;               //一下是根据变量显示
 335   1              P0=TAB[Y2];
 336   1              _nop_();
 337   1              P2=Year1;               
 338   1              P0=TAB[Y1];
 339   1              _nop_();
 340   1              P2=Month2;              //显示月份
 341   1              P0=TAB[M2];
 342   1              _nop_();
 343   1              P2=Month1;              
 344   1              P0=TAB[M1];
 345   1              _nop_();
 346   1              P2=Day2;                //显示日
 347   1              P0=TAB[D2];
 348   1              _nop_();
 349   1              P2=Day1;
 350   1              P0=TAB[D1];
 351   1              _nop_();
 352   1              P2=Hour2;               //显示时间
 353   1              P0=TAB[H2];
 354   1              _nop_();
 355   1              P2=Hour1;
 356   1              P0=TAB[H1];
 357   1              _nop_();
 358   1              P2=Minute2;             //显示分钟
 359   1              P0=TAB[MU2];
 360   1              _nop_();
 361   1              P2=Minute1;
 362   1              P0=TAB[MU1];
C51 COMPILER V7.06   INDEX                                                                 11/16/2007 20:10:34 PAGE 7   

 363   1              _nop_();
 364   1              P2=Second2;             //显示秒
 365   1              P0=TAB[S2];
 366   1              _nop_();
 367   1              P2=Second1;
 368   1              P0=TAB[S1];
 369   1              _nop_();
 370   1              P2=Temperature2;        //显示温度
 371   1              P0=TAB[T2];
 372   1              _nop_();
 373   1              P2=Temperature1;
 374   1              P0=TAB[T1];
 375   1              _nop_();
 376   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1326    ----
   CONSTANT SIZE    =     21    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     33      21
   IDATA SIZE       =   ----       3
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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