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

📄 main.lst

📁 单片机开发的一个完整性
💻 LST
📖 第 1 页 / 共 2 页
字号:
 267   3               min++;NewTime[3]=min/10+0x30;NewTime[4]=min%10+0x30;//小时值放入显示缓冲
 268   3                       Display(3);Display(6);
 269   3                       if(min>=60)//分钟加
 270   3                         {
 271   4                           min=0;NewTime[3]=0x30;NewTime[4]=0x30;//分钟值放入显示缓冲
 272   4                               Display(3);Display(6);
 273   4                          }
 274   3                }
 275   2                if(K1==0)  // 调时结束
 276   2                {      
 277   3              Buzzer();Buzzer();DelayMs(5);while(K1==0);
 278   3                      ET0=0;TR0=0;mark=0;//调时结束,开定时器0
 279   3                }
 280   2              }while(mark);
 281   1      }
 282          
 283          /***************************************************** 
 284           函 数 名:void Integral_point_time(void)
 285           功    能:整点报时:K2-进出
 286           说    明:在正常工作情况下按K2键,进入此函数
 287           入口参数:无
 288           返 回 值:无  
 289           *****************************************************/
 290          void Integral_point_time(void)
 291          {
 292   1        if(sec==0)
 293   1        {
 294   2          if(min==0)
 295   2              {
 296   3                 Buzzer();    
 297   3              }
 298   2        }
 299   1      }
 300          
 301          /***************************************************** 
 302           函 数 名:void Ctrl_on_or_off(void)
C51 COMPILER V7.20   MAIN                                                                  01/12/2008 17:07:08 PAGE 6   

 303           功    能:闹铃控制开关
 304           说    明:在正常工作情况下按K3键,进入此函数 
 305           入口参数:
 306           返 回 值:无  
 307           *****************************************************/
 308          void Ctrl_on_or_off(void)
 309          {
 310   1          CLED=~CLED;
 311   1              if(CLED==0){Buzzer();Buzzer();} //闹铃开响两声
 312   1              else Buzzer();//闹铃关响一声
 313   1      }
 314          
 315          /***************************************************** 
 316           函 数 名:void Set_ctrltime(void)
 317           功    能:设置闹铃时间:K2-小时加1;K3-分钟加1;K4-推出
 318           说    明:在正常工作情况下按K4键,进入此函数
 319           入口参数:无
 320           返 回 值:无  
 321           *****************************************************/
 322          void Set_ctrltime(void)
 323          {
 324   1          bit mark=1;
 325   1          do
 326   1              {
 327   2            Display(4);Display(7);
 328   2                if(K2==0)  // 小时加
 329   2                {
 330   3                       Buzzer();DelayMs(5);while(K2==0);//消抖,等按键K2释放 
 331   3               armhour++;CtrlTime[0]=armhour/10+0x30;CtrlTime[1]=armhour%10+0x30;//小时清零
 332   3                       Display(4);Display(7);
 333   3                       if(armhour>=24)
 334   3                         {
 335   4                           armhour=0;CtrlTime[0]=0x30;CtrlTime[1]=0x30;
 336   4                               Display(4);Display(7);
 337   4                          }
 338   3                }
 339   2                if(K3==0) // 分钟加
 340   2                {
 341   3                   Buzzer();DelayMs(5);while(K3==0);//消抖,等按键K3释放
 342   3               armmin++;CtrlTime[3]=armmin/10+0x30;CtrlTime[4]=armmin%10+0x30;
 343   3                       Display(4);Display(7);
 344   3                       if(armmin>=60)//分钟加
 345   3                         {
 346   4                           armmin=0;CtrlTime[3]=0x30;CtrlTime[4]=0x30;//分钟清零
 347   4                               Display(4);Display(7);
 348   4                          }
 349   3                }
 350   2                if(K4==0)  // 调时结束
 351   2                {      
 352   3              Buzzer();Buzzer();DelayMs(5);while(K4==0);// 消抖
 353   3                      mark=0;                 // 调时结束,开定时器0
 354   3                      CLED=0;                 // 控制指示灯亮
 355   3                }
 356   2              }while(mark);
 357   1      }
 358          
 359          /***************************************************** 
 360           函 数 名:void Manual(void)
 361           功    能:手动控制继电器开关
 362           说    明:在正常工作情况下按K5键,进入此函数 
 363           入口参数:
 364           返 回 值:无  
C51 COMPILER V7.20   MAIN                                                                  01/12/2008 17:07:08 PAGE 7   

 365           *****************************************************/
 366          /*void Manual(void)
 367          {
 368                Buzzer();
 369                RELAY=~RELAY;// 继电器取反
 370                YLED=~YLED;  // 指示灯指示
 371          }*/
 372          
 373          /******************                            手动控制部分结束               ****************************
             -********/
 374          
 375          /***************************************************** 
 376           函 数 名:void Display(uchar num)
 377           功    能:显示设置
 378           说    明:对LCD要显示的数据进行选择 
 379           入口参数:num为对应显示数据
 380           返 回 值:无  
 381           *****************************************************/
 382          void Display(uchar num)
 383          {  
 384   1        switch(num)
 385   1        {
 386   2          // 第一行要显示的数据
 387   2          case 1: Tp[0]=0x02;Read_Temperature();Transport(0,Tp);break;// 显示温度数据,无闹铃
 388   2          case 2: Tp[0]=0x00;Read_Temperature();Transport(0,Tp);break;// 显示温度数据,有闹铃
 389   2              case 3: DisplayListChar(0,0,"SET_TIME");break;              // 显示当前时间设置提示"SET_TIME"      
 390   2          case 4: DisplayListChar(0,0,"SET_CTRL");break;              // 显示控制时间设置提示"SET_CTRL"
 391   2              case 5: DisplayListChar(0,0,"CTRLTIME");break;              // 查看控制时间提示"CTRLTIME"
 392   2              // 第二行要显示的数据
 393   2              case 6: Transport(1,NewTime);break;                         // 显示当前时间
 394   2              case 7: Conversion();Transport(1,CtrlTime);break;           // 显示控制时间
 395   2              // 清零
 396   2              default:break;
 397   2        } 
 398   1      }
 399          
 400          /***************************************************** 
 401           函 数 名:Transport(bit line,uchar arr[])
 402           功    能:传送显示数据
 403           说    明:项目需要显示的各种数据都是通过此函数传送的
 404           入口参数:line为行选择;arr[]显示数据
 405           返 回 值:无  
 406           *****************************************************/
 407          void Transport(bit mark,uchar arr[])
 408          {
 409   1        uchar i;
 410   1        for(i=0;i<8;i++)
 411   1        {
 412   2           DisplayOneChar(i,mark,arr[i]); // 写入数据
 413   2        }
 414   1      }
 415          
 416          /***************************************************** 
 417           函 数 名:void Conversion(void)
 418           功    能:将闹铃数据转换到显示数据中
 419           说    明:
 420           入口参数:
 421           返 回 值:无  
 422           *****************************************************/
 423          void Conversion(void)
 424          { 
 425   1        CtrlTime[0]=armhour/10+0x30;CtrlTime[1]=armhour%10+0x30;
C51 COMPILER V7.20   MAIN                                                                  01/12/2008 17:07:08 PAGE 8   

 426   1        CtrlTime[3]=armmin/10+0x30;CtrlTime[4]=armmin%10+0x30;//小时值放入显示缓冲
 427   1      
 428   1      }
 429          
 430          /***************************************************** 
 431           函 数 名:void time_intt0(void) interrupt 1
 432           功    能:T0时钟中断函数
 433           说    明:秒计数0
 434           入口参数:无 
 435           返 回 值:无  
 436           *****************************************************/
 437          void time_intt0(void) interrupt 1 using 1
 438          {
 439   1        ET0=0;TR0=0;      //关T0定时器
 440   1        ET1=0;TR1=0;      //关T1定时器,停止时间闪烁标志
 441   1        TH0=0x3C;TL0=0xB7;//赋初值
 442   1        TR0=1;TR1=1;     //开T0定时器
 443   1        con_1s++;         //1s计数器计数
 444   1        if(con_1s==20)    //1s到,时间加1
 445   1          {
 446   2                 con_1s=0;      //1s计数器值0
 447   2                 sec++;
 448   2             if(sec>=60)
 449   2                 {
 450   3                    sec=0;min++;
 451   3                        if(min>=60)
 452   3                        {
 453   4                           min=0;hour++;
 454   4                           if(hour>=24)
 455   4                           {
 456   5                           hour=0;
 457   5                           }
 458   4                        }
 459   3                  }
 460   2                              NewTime[0]=hour/10+0x30;NewTime[1]=hour%10+0x30;//小时值放入显示缓冲
 461   2                          NewTime[3]=min/10+0x30;NewTime[4]=min%10+0x30;//分钟值放入显示缓冲
 462   2                              NewTime[6]=sec/10+0x30;NewTime[7]=sec%10+0x30;//秒钟值放入显示缓冲
 463   2          }
 464   1         ET0=1; ET1=1;     
 465   1      }
 466          
 467          /***************************************************** 
 468           函 数 名:void time_intt1(void) interrupt 3 using 2
 469           功    能:T1时钟中断函数
 470           说    明:秒计数闪烁
 471           入口参数:无 
 472           返 回 值:无  
 473           *****************************************************/
 474          void time_intt1(void) interrupt 3 using 2
 475          {
 476   1        ET1=0;TR1=0;      //关T0定时器
 477   1        TH1=0x3C;TL1=0xB7;//赋初值
 478   1        TR1=1;            //开T0定时器
 479   1        con_500ms++;         //1s计数器计数
 480   1        if(con_500ms==10)
 481   1        {
 482   2          con_500ms=0;
 483   2          flag=~flag;WLED=~WLED;
 484   2          if(flag==0)//闪烁标志
 485   2          {NewTime[2]=0x3a;NewTime[5]=0x3a;}
 486   2          else
 487   2          {NewTime[2]=0x20;NewTime[5]=0x20;}
C51 COMPILER V7.20   MAIN                                                                  01/12/2008 17:07:08 PAGE 9   

 488   2        }
 489   1        ET1=1;
 490   1      }
 491          
 492          
 493          //======================================= 指示函数部分 ===============================================
 494          
 495          /***************************************************** 
 496           函 数 名:void Led_hint(void)
 497           功    能:LED工作指示程序
 498           说    明:对按键及密码的输入结果进行指示
 499           入口参数:无
 500           返 回 值:无 
 501           *****************************************************/
 502          void Led_hint(void)
 503          {
 504   1         WLED=0;
 505   1         DelayMs(50);
 506   1         WLED=1;
 507   1         DelayMs(50);
 508   1      }
 509          /***************************************************** 
 510           函 数 名:void Delay400Ms()
 511           功    能:400ms延时
 512           说    明:对显示进行延时
 513           入口参数:无 
 514           返 回 值:无  
 515           *****************************************************/
 516          //400ms延时
 517          void Delay400Ms(void)
 518          {
 519   1        uchar TempCycA = 5;
 520   1        uint TempCycB;
 521   1        while(TempCycA--)
 522   1         {
 523   2           TempCycB=7269;
 524   2           while(TempCycB--);
 525   2         };
 526   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2441    ----
   CONSTANT SIZE    =     27    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     38      11
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1       5
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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