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

📄 main.lst

📁 set(key6) left(key5) right(key4) up(key3) down(key2) OK(key1) 功能一:时钟 时钟计时; 按下set(一次)键即可调时间
💻 LST
字号:
C51 COMPILER V7.50   MAIN                                                                  09/11/2008 09:23:11 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h>
   2          
   3          extern void InitT0(void);
   4          extern unsigned char DispBuf[6];
   5          extern bit xTim,xKey;
   6          sbit Voice=P2^4;
   7          extern void KeyPro(void);
   8          extern unsigned char KeySts;
   9          extern unsigned char sec1,min1,hour1;
  10          extern unsigned char Alarm;
  11          extern unsigned char Alarmsec,Alarmmin,Alarmhour;
  12          extern bit p1,p2;
  13          unsigned char sec,min,hour;
  14          unsigned char code table[16] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86
             -,0x8E};        //显示  
  15                          
  16          void TimUpdate(void)     //时间走时函数
  17          {
  18   1          if(++sec==60)
  19   1          {
  20   2              sec = 0;
  21   2              if(++min==60)
  22   2              {
  23   3                  min = 0;
  24   3                  if(++hour == 24) hour = 0;
  25   3              } 
  26   2          }
  27   1      }
  28          void DisplayTim()
  29          {       
  30   1              
  31   1                DispBuf[0] = table[sec%10];
  32   1                DispBuf[1] = table[sec/10];
  33   1                DispBuf[2] = table[min%10]&0x7f;
  34   1                DispBuf[3] = table[min/10];
  35   1      
  36   1                        if((p1==0)||(hour<=12)||(p2==0)||(p2==1))  //按下DOWN或不按键时走24时制           
  37   1                        {
  38   2                DispBuf[4] = table[hour%10]&0x7f;
  39   2                DispBuf[5] = table[hour/10];
  40   2                        }
  41   1                        if((p1==1)&&(hour>12))                  //按下UP且时间大于12时走12时制
  42   1                        {
  43   2                DispBuf[4] = table[(hour-12)%10]&0x7f;
  44   2                DispBuf[5] = table[(hour-12)/10];
  45   2                        }
  46   1                        
  47   1      }
  48          
  49          void main(void)
  50          {
  51   1          unsigned char i,x;
  52   1          x=1;
  53   1          for (i=0;i<6;i++) 
  54   1              DispBuf[i] = 0xFF;     //全灭
C51 COMPILER V7.50   MAIN                                                                  09/11/2008 09:23:11 PAGE 2   

  55   1              p1=p2=0;
  56   1          Alarm=0;
  57   1          sec = 0;
  58   1          min = 0;
  59   1          hour = 0;
  60   1          InitT0();
  61   1          KeySts = 0;
  62   1          Alarmsec =0;    
  63   1          Alarmmin = 0;
  64   1          Alarmhour = 0;    // 初始状态
  65   1          while(1)
  66   1          {
  67   2                  
  68   2                  
  69   2              if(xTim==1)
  70   2              {
  71   3                  if((KeySts>7)||(KeySts==0))  //设置闹钟时走时,设置时钟时不走时 
  72   3                  {
  73   4                  xTim = 0;
  74   4                  TimUpdate();
  75   4                  if(KeySts==0)
  76   4                  {DisplayTim();
  77   5                              P1 = ~x;                 //流水灯  与秒同步
  78   5                  x <<= 1;
  79   5                  if (x==0) x = 1;}
  80   4                  if((sec<6)&&(min==0))      //整点报时(嘀嘀响6次)
  81   4                     {
  82   5                                  Voice=0;
  83   5                                 }
  84   4                  
  85   4                  }
  86   3              }
  87   2              if(xKey)
  88   2              {
  89   3                  xKey = 0;
  90   3                  KeyPro();                  //调用按键
  91   3              }
  92   2              if(Alarm==1)                  //闹钟响铃(长响10秒)
  93   2              {
  94   3                    if((sec-sec1<10)&&(min==min1)&&(hour==hour1))
  95   3                        {
  96   4                          Voice=0;
  97   4                        }
  98   3              }
  99   2          }
 100   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    288    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3       1
   IDATA SIZE       =   ----    ----
   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 + -