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

📄 main.lst

📁 电子时钟
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.08   MAIN                                                                  04/20/2009 16:06:22 PAGE 1   


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

line level    source

   1          /*---------------------------------------------------------------*
   2          ************************ design by ghtyoo ************************
   3          *----------------------------------------------------------------*/
   4          #include <reg51.h>
   5          #include <init.h>
   6          void Time_C(void);
   7          void Clock_C(void);
   8          void ring_c(void) ;
   9          void Delay(unsigned char i);
  10          extern  void ring(void);
  11          extern void LCD_Write(unsigned char cmd);
  12          extern void LCD_Write_Com(unsigned char com);
  13          extern void LCD_Write_Dat(unsigned char dat);
  14          extern void LCD_Write_Dat_Nmov(unsigned char dat);
  15          extern void LCDInit(void);
  16          extern void TimeInit(void);
  17          extern void LCD_Show1(void);
  18          extern unsigned char Key_Scan(void);
  19          extern unsigned char LCD_Read_Dat(unsigned char com);
  20          extern void Watch(void);
  21          extern void Right(void);
  22          extern void Left(void);
  23          unsigned char store_c,store_i,count,time[3],date[3],store[6]; 
  24          unsigned char wc,wd2,wd1,wd0; 
  25          
  26          void main()
  27          { 
  28   1        unsigned char i,m,n,j,temp; 
  29   1        store_c=0; //闹钟设置完成标志初始化
  30   1        store_i=0; //闹钟设置进行中标志初始化
  31   1        SPEAK=1;
  32   1        i=0xff;//定义一个没用过的数
  33   1        LCDInit();
  34   1        LCD_Show1();
  35   1        EA=0;
  36   1        TimeInit();
  37   1        while(1)
  38   1        {      
  39   2               temp=i;
  40   2           i=Key_Scan();
  41   2               if(i==temp)
  42   2                  continue;     //消除按键抖动
  43   2               switch(i)
  44   2                 {
  45   3                   case '1':LCD_Write_Dat_Nmov('1');break;
  46   3                       case '2':LCD_Write_Dat_Nmov('2');break;
  47   3                       case '3':LCD_Write_Dat_Nmov('3');break;
  48   3                       case '4':LCD_Write_Dat_Nmov('4');break;
  49   3                       case '5':LCD_Write_Dat_Nmov('5');break;
  50   3                       case '6':LCD_Write_Dat_Nmov('6');break;
  51   3                       case '7':LCD_Write_Dat_Nmov('7');break;
  52   3                       case '8':LCD_Write_Dat_Nmov('8');break;
  53   3                       case '9':LCD_Write_Dat_Nmov('9');break;
  54   3                       case '0':LCD_Write_Dat_Nmov('0');break;
  55   3      //               case 'T':LCD_Write_Dat('T');break;       //上电开始就有调时间,不需要这个键来特定调时间
C51 COMPILER V8.08   MAIN                                                                  04/20/2009 16:06:22 PAGE 2   

  56   3      //               case 'C':LCD_Write_Dat('C');break;                                   //时间都没调好,还来什么闹钟,
  57   3      //               case 'W':LCD_Write_Dat('W');break;
  58   3      //               case 'L':LCD_Write_Dat('L');break;
  59   3      //               case 'R':LCD_Write_Dat('R');break;
  60   3      //               case 'B':LCD_Write_Dat('B');break;
  61   3      //               case 'W':Watch();break;
  62   3               case 'L':Left()        ;break;
  63   3                       case 'R':Right();break;
  64   3                       default:break;
  65   3                 }
  66   2                 if (i=='B')
  67   2                 {
  68   3                   date[0]=(LCD_Read_Dat(0x85)-'0')*10+(LCD_Read_Dat(0x86)-'0');
  69   3                       date[1]=(LCD_Read_Dat(0x88)-'0')*10+(LCD_Read_Dat(0x89)-'0');
  70   3                       date[2]=(LCD_Read_Dat(0x8b)-'0')*10+(LCD_Read_Dat(0x8c)-'0');
  71   3                       time[0]=(LCD_Read_Dat(0xc4)-'0')*10+(LCD_Read_Dat(0xc5)-'0');
  72   3                       time[1]=(LCD_Read_Dat(0xc7)-'0')*10+(LCD_Read_Dat(0xc8)-'0');
  73   3                       time[2]=(LCD_Read_Dat(0xca)-'0')*10+(LCD_Read_Dat(0xcb)-'0');
  74   3                       LCD_Write_Com(0x0c);//开显示,关光标,不闪烁
  75   3                   break;     
  76   3                 }
  77   2         }
  78   1         TR0=1;          //定时器0开始计数  
  79   1         ET0=1;         //打开定时器0中断
  80   1         EA=1;                  //开总中断
  81   1         m=time[2];
  82   1         while(1)
  83   1         {
  84   2          n=time[2];
  85   2              if((m!=n)&&(store_i==0)) //一秒更一次,当闹钟没正在设置时
  86   2                {
  87   3                  LCD_Write_Com(0x83);
  88   3                      LCD_Write_Dat('2');
  89   3                      LCD_Write_Com(0x84);
  90   3                      LCD_Write_Dat('0');
  91   3                      LCD_Write_Com(0x87);
  92   3                      LCD_Write_Dat('-');
  93   3                      LCD_Write_Com(0x8a);
  94   3                      LCD_Write_Dat('-');
  95   3                      LCD_Write_Com(0xc6);
  96   3                      LCD_Write_Dat(':');
  97   3                      LCD_Write_Com(0xc9);
  98   3                      LCD_Write_Dat(':');
  99   3                      LCD_Write_Com(0x85);             //日 期
 100   3                      LCD_Write_Dat(date[0]/10+'0');           //年数少于100年
 101   3                      LCD_Write_Com(0x86);
 102   3                      LCD_Write_Dat(date[0]%10+'0');
 103   3                      LCD_Write_Com(0x88);
 104   3                      LCD_Write_Dat(date[1]/10+'0');
 105   3                      LCD_Write_Com(0x89);
 106   3                      LCD_Write_Dat(date[1]%10+'0');
 107   3                      LCD_Write_Com(0x8b);
 108   3                      LCD_Write_Dat(date[2]/10+'0');
 109   3                      LCD_Write_Com(0x8c);
 110   3                      LCD_Write_Dat(date[2]%10+'0');
 111   3                      LCD_Write_Com(0xc4);         //时间
 112   3                      LCD_Write_Dat(time[0]/10+'0');
 113   3                      LCD_Write_Com(0xc5);
 114   3                      LCD_Write_Dat(time[0]%10+'0');
 115   3                      LCD_Write_Com(0xc7);
 116   3                      LCD_Write_Dat(time[1]/10+'0');
 117   3                      LCD_Write_Com(0xc8);
C51 COMPILER V8.08   MAIN                                                                  04/20/2009 16:06:22 PAGE 3   

 118   3                      LCD_Write_Dat(time[1]%10+'0');
 119   3                      LCD_Write_Com(0xca);
 120   3                      LCD_Write_Dat(time[2]/10+'0');
 121   3                      LCD_Write_Com(0xcb);
 122   3                      LCD_Write_Dat(time[2]%10+'0');
 123   3                  m=n;
 124   3            } 
 125   2              if(store_c==1)                                    //闹钟
 126   2                       if((store[0]==date[0])&&(store[1]==date[1])&&(store[2]==date[2])
 127   2                           &&(store[3]==time[0])&&(store[4]==time[1])&&(store[5]==time[2]))
 128   2                        {
 129   3                          ring_c();
 130   3                        }
 131   2              j=Key_Scan();
 132   2              if(j=='T')
 133   2               {
 134   3                      Time_C();
 135   3               }
 136   2              if(j=='C')        
 137   2                {
 138   3                  Clock_C();
 139   3                }
 140   2              if(j=='W')
 141   2                       Watch();
 142   2         } 
 143   1         
 144   1       }
 145           /*********************时钟设置******************************/
 146           void Time_C(void)
 147           {
 148   1          unsigned char i,temp;
 149   1          i=0xff;//定义一个没用过的数
 150   1              TR0=0;     
 151   1          ET0=0;       
 152   1              LCD_Write_Com(0x80);
 153   1              LCD_Write_Dat('T');
 154   1              LCD_Write_Com(0x83);

⌨️ 快捷键说明

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