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

📄 cs21-2.lst

📁 《手把手教你学单片机的C程序设计》及实验程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   CS21_2                                                                02/19/2007 16:38:16 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE CS21_2
OBJECT MODULE PLACED IN CS21-2.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CS21-2.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include<REG51.H>
   2          #include <intrins.H>
   3          #define uint unsigned int
   4          #define uchar unsigned char
   5          uchar code SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
   6          uchar code ACT[6]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
   7          #define INC_KEY 0xfb
   8          #define DEC_KEY 0xf7
   9          #define OK_KEY 0xef
  10          #define STATUS_KEY 0xdf 
  11          #define ON 0 
  12          #define OFF 1 
  13          sbit SDA=P3^7;
  14          sbit SCL=P3^6;
  15          sbit OUTPUT=P1^0;
  16          /************************************************/
  17          uchar status;
  18          uchar deda,sec,min,hour;
  19          uchar set1_dat[2],set2_dat[2];
  20          bit set1_flag,set2_flag;
  21          /************************************************/
  22          uchar key(void);
  23          void pout(void);
  24          void delay(uint k);
  25          bdata char com_data;
  26          sbit mos_bit=com_data^7;
  27          sbit low_bit=com_data^0;
  28          void delay_iic(int n);
  29          uchar rd_24c01(char a);
  30          void wr_24c01(char a,char b);
  31          /************************************************/
  32          void initial(void)
  33          {uchar rd_val;
  34   1      rd_val=rd_24c01(100);delay_iic(250);
  35   1      if(rd_val==88)
  36   1      {set1_dat[0]=rd_24c01(80);delay_iic(250);
  37   2      set1_dat[1]=rd_24c01(81);delay_iic(250);
  38   2      set2_dat[0]=rd_24c01(90);delay_iic(250);
  39   2      set2_dat[1]=rd_24c01(91);delay_iic(250);
  40   2      set1_flag=(bit)rd_24c01(70);delay_iic(250);
  41   2      set2_flag=(bit)rd_24c01(71);delay_iic(250);
  42   2      }
  43   1      TMOD=0x11;
  44   1      TH0=-(50000/256);
  45   1      TL0=-(50000%256);
  46   1      TH1=-(1000/256);
  47   1      TL1=-(1000%256);
  48   1      TR0=1;ET0=1;TR1=1;ET1=1;
  49   1      EA=1;
  50   1      }
  51          /*************************************************/
  52          void main(void)
  53          {uchar key_val;
  54   1      initial();
  55   1              for(;;)
C51 COMPILER V7.06   CS21_2                                                                02/19/2007 16:38:16 PAGE 2   

  56   1              {
  57   2              key_val=key();
  58   2              pout();
  59   2                      if(key_val==STATUS_KEY)
  60   2                      {status++;
  61   3                              if(status==5)
  62   3                              {status=0;
  63   4                              EA=0;
  64   4                                              wr_24c01(100,88);delay_iic(250); 
  65   4                                              wr_24c01(80,set1_dat[0]);delay_iic(250); 
  66   4                                              wr_24c01(81,set1_dat[1]);delay_iic(250); 
  67   4                                              wr_24c01(90,set2_dat[0]);delay_iic(250); 
  68   4                                              wr_24c01(91,set2_dat[1]);delay_iic(250); 
  69   4                                              wr_24c01(70,(uchar)set1_flag);delay_iic(250); 
  70   4                                              wr_24c01(71,(uchar)set2_flag);delay_iic(250); 
  71   4                              EA=1;
  72   4                              }
  73   3                      delay(300);
  74   3                      }
  75   2      //=====================================================================
  76   2                      if(key_val==INC_KEY)
  77   2                      {
  78   3                              switch(status)
  79   3                              {
  80   4                              case 1:if(set1_dat[0]<60)set1_dat[0]++;delay(300);break;
  81   4                              case 2:if(set1_dat[1]<23)set1_dat[1]++;delay(300);break;
  82   4                              case 3:if(set2_dat[0]<60)set2_dat[0]++;delay(300);break;
  83   4                              case 4:if(set2_dat[1]<23)set2_dat[1]++;delay(300);break;
  84   4                              default:break;
  85   4                              }
  86   3                      }
  87   2      //======================================================================
  88   2                      if(key_val==DEC_KEY)
  89   2                      {
  90   3                              switch(status)
  91   3                              {
  92   4                              case 1:if(set1_dat[0]>0)set1_dat[0]--;  delay(300);break;
  93   4                              case 2:if(set1_dat[1]>0)set1_dat[1]--;  delay(300);break;
  94   4                              case 3:if(set2_dat[0]>0)set2_dat[0]--;  delay(300);break;
  95   4                              case 4:if(set2_dat[1]>0)set2_dat[1]--;  delay(300);break;
  96   4                              default:break;
  97   4                              }
  98   3                      }
  99   2      //====================================================================
 100   2                      if(key_val==OK_KEY)
 101   2                      {
 102   3                              if((status==1)||(status==2)){set1_flag=!set1_flag;delay(300);}
 103   3                              if((status==3)||(status==4)){set2_flag=!set2_flag;delay(300);}
 104   3                      }       
 105   2              }
 106   1      }
 107          /************************************************/
 108          uchar key(void)
 109          {
 110   1      uchar temp;
 111   1      P3=0xff;
 112   1      temp=P3;
 113   1              if(temp!=0xff)
 114   1              {
 115   2              delay(30);
 116   2              P3=0xff;
 117   2              temp=P3;
C51 COMPILER V7.06   CS21_2                                                                02/19/2007 16:38:16 PAGE 3   

 118   2              }
 119   1      return (temp);
 120   1      }
 121          /*************************************************/
 122          void pout(void)
 123          {
 124   1              if(set1_flag)
 125   1              {
 126   2              if((min==set1_dat[0])&&(hour==set1_dat[1]))OUTPUT=ON;
 127   2              }
 128   1              else OUTPUT=OFF;
 129   1              //----------------------------------------
 130   1              if(set2_flag)
 131   1              {
 132   2              if((min==set2_dat[0])&&(hour==set2_dat[1]))OUTPUT=OFF;
 133   2              }
 134   1              else OUTPUT=OFF;
 135   1      }
 136          /*************************************************/
 137          void time0_serve(void) interrupt 1
 138          {
 139   1      TH0=-(50000/256);
 140   1      TL0=-(50000%256);
 141   1      deda++;
 142   1      if(deda>=20){deda=0;sec++;}
 143   1      if(sec>59){sec=0;min++;}
 144   1      if(min>59){min=0;hour++;}
 145   1      if(hour>23){hour=0;}
 146   1      }
 147          /********************************************/
 148          void time1_serve(void) interrupt 3
 149          {
 150   1              static uchar time_cnt;
 151   1              static bit bit_flag;
 152   1              TH1=-(1000/256);
 153   1              TL1=-(1000%256);
 154   1              time_cnt++;
 155   1              bit_flag=~bit_flag;
 156   1              //---------------------------------
 157   1              if(status==0){if(time_cnt>5)time_cnt=0;}
 158   1              else {if(time_cnt>29)time_cnt=0;}
 159   1              //---------------------------------
 160   1              if(status==0)
 161   1            { 
 162   2                              switch(time_cnt)
 163   2                              {
 164   3                              case 0:P0=SEG7[sec%10];P2=ACT[time_cnt];break;
 165   3                              case 1:P0=SEG7[sec/10];P2=ACT[time_cnt];break;
 166   3                              case 2:P0=SEG7[min%10];P2=ACT[time_cnt];break;
 167   3                              case 3:P0=SEG7[min/10];P2=ACT[time_cnt];break;

⌨️ 快捷键说明

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