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

📄 stopwatch.lst

📁 本文件是用keil编程的电子表的设计
💻 LST
字号:
C51 COMPILER V7.09   STOPWATCH                                                             03/16/2009 16:07:46 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE STOPWATCH
OBJECT MODULE PLACED IN stopwatch.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE stopwatch.c BROWSE INTVECTOR(0X4000) DEBUG OBJECTEXTEND

line level    source

   1          #include<reg51.h>
   2          #include<intrins.h>
   3          
   4          sbit dat=P1^0;
   5          sbit clk=P1^1;
   6          sbit isKeyPress=P1^2;
   7          sbit sege1=P1^6;
   8          sbit sege2=P1^5;
   9          sbit sege3=P1^4;
  10          sbit sege4=P1^3;
  11          
  12          unsigned char SEGCODE[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  13          unsigned char KEYCHECKCODE[8] = {1,2,4,8,16,32,64,128};
  14          unsigned int counter=0x10,dbuffer=0,min=0;
  15          
  16          
  17          void initial(void)
  18          {
  19   1              TMOD=0x01;
  20   1              TH0=0x00;
  21   1              TL0=0x00;
  22   1              IE=0x82;
  23   1              TR0=1;
  24   1      }
  25          
  26          void    send(unsigned char a)
  27          {
  28   1              data unsigned char i;
  29   1              for(i=0;i<8;i++)
  30   1              {
  31   2                      if(_crol_(a,i)&0x80)
  32   2                              dat=1;
  33   2                      else
  34   2                              dat=0;
  35   2                      clk=1;
  36   2                      clk=0;
  37   2              }
  38   1      }
  39          
  40          void delay(unsigned int k)
  41          {
  42   1              unsigned int i,j; 
  43   1              for(i=0;i<k;i++)
  44   1                      for(j=0;j<121;j++);
  45   1      }       
  46          
  47          
  48          unsigned char key_scan(void)
  49          {
  50   1              unsigned char data keyNum,i,keyValue;   
  51   1              
  52   1              keyNum=0xff;                    
  53   1              send(0x00);
  54   1              while(!isKeyPress)
  55   1              {       
C51 COMPILER V7.09   STOPWATCH                                                             03/16/2009 16:07:46 PAGE 2   

  56   2                      //keyNum=0xff;          
  57   2                      //display_bit=0xfe;
  58   2                      for(i = 0;i < 8; i++)   
  59   2                      {       
  60   3                              send(~KEYCHECKCODE[i]);
  61   3                              if(!isKeyPress)
  62   3                              {
  63   4                                      keyValue = i;
  64   4                                      break;
  65   4                              }
  66   3                              /*
  67   3                              send(display_bit);      
  68   3                              if(!isKeyPress)
  69   3                              {       
  70   3                                      keyNum=display_bit;     
  71   3                                      break;  
  72   3                              }       
  73   3                              display_bit=_crol_(display_bit,1); 
  74   3                              */
  75   3                      }
  76   2                      delay(200);
  77   2                      return          keyValue;
  78   2              }       
  79   1              return keyNum;
  80   1      }               
  81          
  82          
  83          
  84          int main(void)
  85          {
  86   1              initial();
  87   1              
  88   1              while(1)
  89   1              {
  90   2                      unsigned char keyValue = 8;
  91   2                      unsigned char i;
  92   2                      send(0x00);
  93   2                      while(!isKeyPress)
  94   2                      {       
  95   3                              for(i = 0;i < 8; i++)   
  96   3                              {       
  97   4                                      send(~KEYCHECKCODE[i]);
  98   4                                      if(!isKeyPress)
  99   4                                      {
 100   5                                              keyValue = i;
 101   5                                              break;
 102   5                                      }
 103   4                              }
 104   3                      }
 105   2      
 106   2                      if(keyValue==0)
 107   2                      {
 108   3                              min++;
 109   3                              if(min > 59)
 110   3                              {
 111   4                                      min = 0;
 112   4                              }
 113   3                      }
 114   2      
 115   2                      if(keyValue==1)
 116   2                      {
 117   3                              min--;
C51 COMPILER V7.09   STOPWATCH                                                             03/16/2009 16:07:46 PAGE 3   

 118   3                              if(min < 0)
 119   3                              {
 120   4                                      min = 59;
 121   4                              }
 122   3                      }
 123   2      
 124   2                      send(SEGCODE[dbuffer%10]);
 125   2                      sege4=0;
 126   2                      delay(1);
 127   2                      sege4=1;
 128   2                      send(SEGCODE[dbuffer/10]);
 129   2                      sege3=0;
 130   2                      delay(1);
 131   2                      sege3=1;
 132   2                      send(SEGCODE[min%10]);
 133   2                      sege2=0;
 134   2                      delay(1);
 135   2                      sege2=1;
 136   2                      send(SEGCODE[min/10]);
 137   2                      sege1=0;
 138   2                      delay(1);
 139   2                      sege1=1;
 140   2              }
 141   1      }
 142          
 143          void    timer0_int(void) interrupt      1
 144          {
 145   1              TH0=0x00;
 146   1              TL0=0x00;
 147   1              TR0=0;
 148   1              
 149   1              if(!(counter--))
 150   1              {
 151   2                      counter=0x10;
 152   2                      if(dbuffer!=59)
 153   2                              dbuffer++;
 154   2                      else if(min<59)
 155   2                      { 
 156   3                              dbuffer=0;
 157   3                              min++;
 158   3                      }
 159   2                      else 
 160   2                              min=0;
 161   2              }
 162   1              TR0=1;
 163   1      }
 164          
 165          
 166          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    422    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     24       3
   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 + -