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

📄 main.lst

📁 单片机开发的一个完整性
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.20   MAIN                                                                  01/12/2008 17:07:08 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /******************************************************
   2          
   3                       带红外控制的LCD时间控制器
   4          
   5                                      zhaojun 2007/12/20
   6          
   7          ******************************************************/
   8          #include"config.h"    // 系统设置
   9          
  10          
  11          main()
  12          {
  13   1              LCMInit();//初始化LCD
  14   1              Clearmen();//初始化系统
  15   1              Mychar();//写入自定义字符
  16   1          while(1)
  17   1              {
  18   2                if(CLED==0)// 有闹铃标志
  19   2                {
  20   3              Display(2); 
  21   3              Display(6);     
  22   3              Ctrlaction();//到点比较函数
  23   3                }
  24   2                else      // 无闹铃标志
  25   2                {
  26   3                  Display(1); 
  27   3              Display(6);
  28   3                }
  29   2                if(DLED==0)Integral_point_time();//整点报时
  30   2                //
  31   2            Keyscan();     // 手动按键扫描
  32   2      
  33   2                Telecontrol(); // 遥控按键扫描
  34   2              }
  35   1      }
  36          /******************************     遥控部分     ***********************************************/
  37          
  38          /***************************************************** 
  39           函 数 名:void Telecontrol(void)
  40           功    能:遥控按键扫描
  41           说    明:
  42           入口参数:
  43           返 回 值:无  
  44           *****************************************************/
  45          void Telecontrol(void)
  46          {
  47   1        if(IRCOM[2]==0x15)//TIME:当前时间设置
  48   1        {
  49   2         IRCOM[2]=0xff;
  50   2         Tp_set_time();
  51   2        }
  52   1        if(IRCOM[2]==0x1c)//R/L:整点报时
  53   1        {
  54   2          IRCOM[2]=0xff;
  55   2              DLED=~DLED;
C51 COMPILER V7.20   MAIN                                                                  01/12/2008 17:07:08 PAGE 2   

  56   2        }
  57   1        if(IRCOM[2]==0x0c)//P/N:闹铃控制开关
  58   1        {
  59   2          IRCOM[2]=0xff;
  60   2          CLED=~CLED;
  61   2        }
  62   1        if(IRCOM[2]==0x16)//RETURN:闹铃设置
  63   1        {
  64   2          IRCOM[2]=0xff;
  65   2          Tp_set_ctrltime();
  66   2        }
  67   1        if(IRCOM[2]==0x16)//||:继电器
  68   1        {
  69   2          IRCOM[2]=0xff;
  70   2          RELAY=~RELAY;// 继电器取反
  71   2          YLED=~YLED;  // 指示灯指示
  72   2        }
  73   1      }
  74          
  75          /***************************************************** 
  76           函 数 名:void Tp_set_time(void)
  77           功    能:遥控设置时间
  78           说    明:
  79           入口参数:
  80           返 回 值:无  
  81           *****************************************************/
  82          void Tp_set_time(void)
  83          {
  84   1          bit mark=1;
  85   1          ET0=0;TR0=0;    // 关定时器0
  86   1              do
  87   1              {
  88   2                 NewTime[2]=0x3a;NewTime[5]=0x3a;//写入冒号
  89   2             sec=0;NewTime[6]=0x30;NewTime[7]=0x30;//秒钟值放入显示缓冲
  90   2             Display(3);Display(6);
  91   2                 if(IRCOM[2]==0x0e)//小时加1
  92   2                 {
  93   3                   IRCOM[2]=0xff;
  94   3                   hour++;NewTime[0]=hour/10+0x30;NewTime[1]=hour%10+0x30;//小时值放入显示缓冲
  95   3                       Display(3);Display(6);
  96   3                       if(hour>=24)
  97   3                         {
  98   4                           hour=0;NewTime[0]=0x30;NewTime[1]=0x30;
  99   4                               Display(3);Display(6);
 100   4                          }
 101   3                 }
 102   2             if(IRCOM[2]==0x1a)// 分钟加1
 103   2                 {
 104   3                   IRCOM[2]=0xff;
 105   3                   min++;NewTime[3]=min/10+0x30;NewTime[4]=min%10+0x30;//小时值放入显示缓冲
 106   3                       Display(3);Display(6);
 107   3                       if(min>=60)//分钟加
 108   3                         {
 109   4                           min=0;NewTime[3]=0x30;NewTime[4]=0x30;//分钟值放入显示缓冲
 110   4                               Display(3);Display(6);
 111   4                          }
 112   3                 }
 113   2             if(IRCOM[2]==0x0f)//结束设置
 114   2                 {
 115   3                   IRCOM[2]=0xff;
 116   3                   ET0=1;TR0=1;mark=0;//调时结束,开定时器0
 117   3                 }
C51 COMPILER V7.20   MAIN                                                                  01/12/2008 17:07:08 PAGE 3   

 118   2              }while(mark);
 119   1      }
 120          
 121          /***************************************************** 
 122           函 数 名:void Tp_set_ctrltime(void)
 123           功    能:设置闹铃时间
 124           说    明:
 125           入口参数:无
 126           返 回 值:无  
 127           *****************************************************/
 128          void Tp_set_ctrltime(void)
 129          {
 130   1          bit mark=1;
 131   1          do
 132   1              {
 133   2            Display(4);Display(7);
 134   2                if(IRCOM[2]==0x0A)  // 小时加
 135   2                {  
 136   3                   IRCOM[2]=0xff;
 137   3                       DelayMs(5);while(K2==0);//消抖,等按键K2释放 
 138   3               armhour++;CtrlTime[0]=armhour/10+0x30;CtrlTime[1]=armhour%10+0x30;//小时清零
 139   3                       Display(4);Display(7);
 140   3                       if(armhour>=24)
 141   3                         {
 142   4                           armhour=0;CtrlTime[0]=0x30;CtrlTime[1]=0x30;
 143   4                               Display(4);Display(7);
 144   4                          }
 145   3                }
 146   2                if(IRCOM[2]==0x1E) // 分钟加
 147   2                {
 148   3                   IRCOM[2]=0xff;
 149   3                   DelayMs(5);while(K3==0);//消抖,等按键K3释放
 150   3               armmin++;CtrlTime[3]=armmin/10+0x30;CtrlTime[4]=armmin%10+0x30;
 151   3                       Display(4);Display(7);
 152   3                       if(armmin>=60)//分钟加
 153   3                         {
 154   4                           armmin=0;CtrlTime[3]=0x30;CtrlTime[4]=0x30;//分钟清零
 155   4                               Display(4);Display(7);
 156   4                          }
 157   3                }
 158   2                if(IRCOM[2]==0x0F)  // 调时结束
 159   2                {      
 160   3              IRCOM[2]=0xff;
 161   3                      mark=0;                 // 调时结束,开定时器0
 162   3                }
 163   2              }while(mark);
 164   1      }
 165          /***************************************************** 
 166           函 数 名:void Ctrlaction(void)
 167           功    能:闹铃时间比较函数
 168           说    明:
 169           入口参数:
 170           返 回 值:无  
 171           *****************************************************/
 172          void Ctrlaction(void)
 173          { 
 174   1        if(armhour==hour) //如果小时相等,则比较分钟
 175   1        {
 176   2          if(armmin==min) // 如果分钟相等
 177   2          {
 178   3                CLED=1;
 179   3                RELAY=~RELAY;// 继电器去取反
C51 COMPILER V7.20   MAIN                                                                  01/12/2008 17:07:08 PAGE 4   

 180   3                YLED=~YLED;  // 继电器工作指示灯取反
 181   3            Display(5);Display(7);//显示闹铃时间
 182   3                Led_hint();  // LED闪烁
 183   3            Buzzer();Buzzer();// 蜂鸣器报警
 184   3            Delay400Ms();Delay400Ms();
 185   3            Buzzer();// 蜂鸣器报警
 186   3                Delay400Ms();Delay400Ms();
 187   3          }
 188   2        }
 189   1      } 
 190          /******************                             手动控制部分               *******************************
             -*****/
 191          
 192          /***************************************************** 
 193           函 数 名:void Keyscan(void)
 194           功    能:按键扫描
 195           说    明:不同的按键进入不同的项目
 196           入口参数:
 197           返 回 值:无  
 198           *****************************************************/
 199          void Keyscan(void)
 200          {
 201   1        /* ******** 当前时间设置 *******************/
 202   1        if(K1==0)
 203   1        {
 204   2          DelayMs(5);while(K1==0);//消抖
 205   2          Set_time();  //调用设置当前时间函数
 206   2        }
 207   1      
 208   1        /********** 整点报时控制开关 ******************/
 209   1        if(K2==0)
 210   1        {
 211   2          DelayMs(5);while(K2==0);//消抖
 212   2          DLED=~DLED;//整点报时标志取反
 213   2      
 214   2        }
 215   1      
 216   1        /******* 闹铃控制开关 *********************/
 217   1        if(K3==0) 
 218   1        {
 219   2          DelayMs(5);while(K3==0);//消抖
 220   2          Ctrl_on_or_off();//闹铃控制开关
 221   2        }
 222   1      
 223   1        /******* 闹铃时间设置 ***********************/
 224   1        if(K4==0)
 225   1        {
 226   2          DelayMs(5);while(K4==0);//消抖
 227   2          Set_ctrltime();//设置闹铃时间函数
 228   2        }
 229   1      
 230   1       /********  手动开关  ********************/
 231   1      /*  if(K5==0)
 232   1          {
 233   1            DelayMs(5);while(K5==0);//消抖
 234   1                Manual();
 235   1              } */  
 236   1      }
 237          /***************************************************** 
 238           函 数 名:void Set_time(void)
 239           功    能:设置当前时间:K2-小时加1;K3-分钟加1;K1-推出
 240           说    明:在正常工作情况下按K1键,进入此函数
C51 COMPILER V7.20   MAIN                                                                  01/12/2008 17:07:08 PAGE 5   

 241           入口参数:无
 242           返 回 值:无  
 243           *****************************************************/
 244          void Set_time(void)
 245          {
 246   1          bit mark=1;
 247   1          ET0=0;TR0=0;    // 关定时器0
 248   1          do
 249   1              {
 250   2            NewTime[2]=0x3a;NewTime[5]=0x3a;//写入冒号
 251   2            sec=0;NewTime[6]=0x30;NewTime[7]=0x30;//秒钟值放入显示缓冲
 252   2            Display(3);Display(6);
 253   2                if(K2==0)  // 小时加
 254   2                {
 255   3                       Buzzer();DelayMs(5);while(K2==0);//消抖,等按键K2释放 
 256   3               hour++;NewTime[0]=hour/10+0x30;NewTime[1]=hour%10+0x30;//小时值放入显示缓冲
 257   3                       Display(3);Display(6);
 258   3                       if(hour>=24)
 259   3                         {
 260   4                           hour=0;NewTime[0]=0x30;NewTime[1]=0x30;
 261   4                               Display(3);Display(6);
 262   4                          }
 263   3                }
 264   2                if(K3==0)// 分钟加
 265   2                {
 266   3                   Buzzer();DelayMs(5);while(K3==0); //消抖,等按键K3释放

⌨️ 快捷键说明

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