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

📄 alarm001.lst

📁 菜鸟板的时钟 第一次学51 师兄们帮小弟看看 还有很多要改进的地方
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.07   ALARM001                                                              02/02/2009 01:27:16 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE ALARM001
OBJECT MODULE PLACED IN alarm001.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE alarm001.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <reg51.h>//加载头文件
   2          #include <intrins.H>//装载
   3          #define uchar unsigned char//变量类型的宏定义
   4          #define uint unsigned int//变量类型的宏定义
   5          #define  SET    5
   6          #define  MON   4
   7          #define  DAY    3
   8          #define  HOU    2
   9          #define  MIN    1
  10          #define  CHECK   6
  11          #define  PCF8583  0XA0
  12          #define  _Nop()  _nop_()        /*定义空指令*/
  13          sbit SDA=P1^7;            /*模拟I2C数据传送位*/
  14          sbit SCL=P1^6;            /*模拟I2C时钟控制位*/
  15          
  16                                                           /*状态标志*/
  17          bit ack;          /*应答标志位*/
  18          
  19          uchar SEG7[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};/*0~9的数码管段码*/
  20          
  21          uchar act[12]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x04,0x08,0x10,0x20};//12位数码管位码;   
  22          
  23          uchar MS,mon,day,hou,min,sec;
  24          uchar ALM_mon,ALM_day,ALM_hou,ALM_min;
  25          uchar key;
  26          uchar discnt;
  27          uint cnt,time_cnt;
  28          uchar first;
  29          sbit MSKEY=P0^5; /*功能键标志*/
  30          sbit MONKEY=P0^4;//月按键
  31          sbit DAYKEY=P0^3;//天按键
  32          sbit HOUKEY=P0^2;//时按键
  33          sbit MINKEY=P0^1;//分按键
  34          sbit checkey=P0^0;
  35          //sbit CHECKKEY=P3^0;//查询按键
  36          sbit CLK=P1^0;
  37          sbit  DATA=P1^1;
  38          
  39          void TIMERIni(void);
  40          void menu(void);
  41          void delay(uint k);
  42          void keyboard(void);
  43          void send164(uchar m);
  44          void dis_time(uchar m);
  45          void dis_adjtime(uchar m);
  46          uchar IRcvByte(uchar sla,uchar suba);
  47          bit ISendByte(uchar sla,uchar suba,uchar c);
  48          void Ack_I2c(bit a);
  49          uchar  RcvByte(void);
  50          void  SendByte(uchar c);
  51          void Stop_I2c(void);
  52          void Start_I2c(void);
  53          void dis_almtime(uchar m);
  54          
  55          
C51 COMPILER V7.07   ALARM001                                                              02/02/2009 01:27:16 PAGE 2   

  56          
  57          uchar convert_BCD(uchar i)
  58          { 
  59   1           uchar i1,i2;
  60   1               i1=i%10;
  61   1               i2=i/10; 
  62   1              i2=i2<<4;
  63   1               i=i2+i1;
  64   1               return i;
  65   1      }
  66          
  67          void menu(void)//扫描按键子函数
  68          {
  69   1              uchar i;
  70   1             if(key==SET)
  71   1                      {MS++; 
  72   2                         /*if(first==0)
  73   2                        {  
  74   2                                  ISendByte(PCF8583, 0X00,0x80);first=1;
  75   2                        }*/
  76   2                        if(MS==2)
  77   2                                      {  
  78   3                                         
  79   3                                                MS=0; 
  80   3                                       /* i=convert_BCD(min);
  81   3                                        ISendByte(PCF8583, 0X03,i);
  82   3                                         i=convert_BCD(hou);
  83   3                                         ISendByte(PCF8583, 0X04, i);
  84   3                                         i=convert_BCD(day);
  85   3                                         ISendByte(PCF8583, 0x05, i);
  86   3                                         i=convert_BCD(mon);
  87   3                                         ISendByte(PCF8583, 0x06, i);
  88   3                                           ISendByte(PCF8583, 0X00,0x00);*/
  89   3                                        }
  90   2                        }// 调整模式\
*** WARNING C329 IN LINE 90 OF alarm001.c: single-line comment contains line-continuation
  91   1              if(key==CHECK)
  92   1                      {
  93   2                           if(MS!=2)
  94   2                                      {MS=2;}
  95   2                              else
  96   2                                      {MS=0;}
  97   2                      }
  98   1             if(MS==1)
  99   1                       {    
 100   2                             switch(key)
 101   2                              { 
 102   3                                      case (MIN):
 103   3                                                                  {   ISendByte(PCF8583, 0X00,0x00); 
 104   4                                                                      min++;if(min>=60) min=0;
 105   4                                                                 i=convert_BCD(min);
 106   4                                                                 ISendByte(PCF8583, 0X03,i);
 107   4                                                                      }break;
 108   3                                          case (HOU):
 109   3                                                                {   ISendByte(PCF8583, 0X00,0x00); 
 110   4                                                                              hou++;if(hou>23) hou=0;
 111   4                                                                         i=convert_BCD(hou);
 112   4                                                                         ISendByte(PCF8583, 0X04, i);
 113   4                                                                } break;
 114   3                                       case(DAY):
 115   3                                                                 {   ISendByte(PCF8583, 0X00,0x00); 
 116   4                                                                      day++;if(day>31) day=1;
C51 COMPILER V7.07   ALARM001                                                              02/02/2009 01:27:16 PAGE 3   

 117   4                                                                   i=convert_BCD(day);
 118   4                                                                  ISendByte(PCF8583, 0x05, i);
 119   4                                                                       }break;
 120   3                                      case(MON):
 121   3                                                              {   ISendByte(PCF8583, 0X00,0x00); 
 122   4                                                                      mon++;if(mon>12) mon=1;
 123   4                                                                  i=convert_BCD(mon);
 124   4                                                                  ISendByte(PCF8583, 0x06, i);
 125   4                                                                      }break;
 126   3                                              default:break;
 127   3                              }  
 128   2             if(MS==2)
 129   2                       {    
 130   3                             switch(key)
 131   3                              { 
 132   4                                      case (MIN):
 133   4                                                                  {   
 134   5                                                                      ALM_min++;if(ALM_min>=60) ALM_min=0;
 135   5                                                                 i=convert_BCD(ALM_min);
 136   5                                                                 ISendByte(PCF8583, 0X0b,i);
 137   5                                                                      }break;
 138   4                                          case (HOU):
 139   4                                                                {  // ISendByte(PCF8583, 0X0b,0x00); 
 140   5                                                                              ALM_hou++;if(ALM_hou>23)ALM_hou=0;
 141   5                                                                         i=convert_BCD(ALM_hou);
 142   5                                                                         ISendByte(PCF8583, 0X0c, i);
 143   5                                                                } break;
 144   4                                       case(DAY):
 145   4                                                                 {   //ISendByte(PCF8583, 0X00,0x00); 
 146   5                                                                      ALM_day++;if(ALM_day>31) ALM_day=1;
 147   5                                                                   i=convert_BCD(ALM_day);
 148   5                                                                  ISendByte(PCF8583, 0x0d, i);
 149   5                                                                       }break;
 150   4                                      case(MON):
 151   4                                                              {   //ISendByte(PCF8583, 0X00,0x00); 
 152   5                                                                      ALM_mon++;if(ALM_mon>12) ALM_mon=1;
 153   5                                                                  i=convert_BCD(ALM_mon);
 154   5                                                                  ISendByte(PCF8583, 0x0e, i);
 155   5                                                                      }break;
 156   4                                              default:break;
 157   4                              }
 158   3              }
 159   2                 key=0;
 160   2                        
 161   2      }
 162   1      }
 163          
 164          void delay(uint k)
 165          {
 166   1          uint i,j;
 167   1          for(i=0;i<k;i++)
 168   1                      {
 169   2                       for(j=0;j<1000;j++) ;
 170   2                     }
 171   1      }
 172          
 173          void keyboard(void)
 174          {   
 175   1          P0=0X3F;
 176   1           if((P0&0x02)==0)
 177   1               {  delay(5);
 178   2                   while((P0&0x02)==0);
C51 COMPILER V7.07   ALARM001                                                              02/02/2009 01:27:16 PAGE 4   

 179   2                         key=MIN;
 180   2                }
 181   1               else 
 182   1                      if((P0&0x04)==0)
 183   1                          {  
 184   2                            delay(5);
 185   2                             while((P0&0x04)==0);
 186   2                              key=HOU;
 187   2                           } 
 188   1                         else 
 189   1                               if((P0&0x08)==0)
 190   1                                     {  
 191   2                                     delay(5);
 192   2                                     while((P0&0x08)==0);
 193   2                                       key=DAY;
 194   2                                      } 
 195   1                                       else
 196   1                                            if((P0&0x10)==0)
 197   1                                              {  
 198   2                                                 delay(5);
 199   2                                                 while((P0&0x10)==0);
 200   2                                                 key=MON;
 201   2                                               } 
 202   1                                                                else
 203   1                                                        if((P0&0x20)==0)
 204   1                                                         {  
 205   2                                                            delay(5);
 206   2                                                            while((P0&0x20)==0);
 207   2                                                             key=SET;
 208   2                                                              }
 209   1                                                         else
 210   1                                                           if((P0&0X01)==0)
 211   1                                                                      {
 212   2                                                                         delay(5);
 213   2                                                                        while((P0&0X01)==0);
 214   2                                                                         key=CHECK;
 215   2                                                                       }
 216   1      } 
 217          

⌨️ 快捷键说明

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