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

📄 time.lst

📁 两个7段共阳LCD显示器
💻 LST
字号:
C51 COMPILER V7.50   TIME                                                                  07/13/2007 16:59:01 PAGE 1   


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

line level    source

   1          #include <reg52.h>
   2          
   3          #define scr1 P1  //个位显示屏(右),P1~P7
   4          #define scr10 P2 //十位显示屏(左),P2~p7
   5          //晶振频率20MHZ,最小计时时间0.6us,此程序选用计时方式2,预置数设为-167,溢出一次为0.100ms
   6          
   7          sbit keystart = P3 ^ 5;  //开始键(k3)
   8          sbit key1 = P1 ^ 7;      //个位调整键(k1)
   9          sbit key10 = P3 ^ 4;     //十位调整键(k2)
  10          signed char s1 = 0;    //记录个位的值
  11          signed char s10 = 0;   //记录十位的值
  12          
  13          void main(void)
  14          {
  15   1          bit k1;              //记录key1键的状态,0松开,1按下
  16   1              bit k10;             //记录key10键的状态,0松开,1按下
  17   1              bit ks;              //记录keystart键的状态,0松开,1按下
  18   1              unsigned int t1;    //延时1秒   
  19   1          unsigned char num[10] =
  20   1                                  //0    1    2    3    4    5    6    7    8    9
  21   1                                  {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳极
  22   1          unsigned char zt; //zt =
  23   1                            //     0 起始状态,等待输入,显示器显示00
  24   1                                        //     1 等待启动状态,此时十位和个位不同时为0
  25   1                                        //     2 倒计时状态
  26   1                                            //     3 暂停状态
  27   1              TMOD = (TMOD&0xf0) | 0x0a;  //设置计时方式2     
  28   1              TL0 = -167;
  29   1              TH0 = -167;
  30   1          while(1)
  31   1              {       
  32   2                  if(zt == 0)
  33   2                      {
  34   3                          s1 = 0;
  35   3                              s10 = 0;
  36   3                      }
  37   2                  scr1 = num[s1];
  38   2                  scr10 = num[s10];
  39   2                      //key1键检测
  40   2                      if(k1 == 0 && zt != 2 && zt != 3)                   
  41   2                      {
  42   3                          if(key1 == 0)                   //检测到个位键按下
  43   3                              {               
  44   4                                  k1 = 1;                      
  45   4                              if(++s1 > 9)
  46   4                              {
  47   5                                  s1 = 0;
  48   5                                      if(++s10 > 9)s10 = 0;  //向十位进位
  49   5                                      }                               
  50   4                              if(s1 != 0 || s10 != 0)zt = 1;
  51   4                                          else zt = 0;
  52   4                              }
  53   3                      }
  54   2                      if(k1 == 1 && key1 == 1)k1 = 0;     //松开个位键
  55   2                      //key10键检测
C51 COMPILER V7.50   TIME                                                                  07/13/2007 16:59:01 PAGE 2   

  56   2                      if(k10 == 0 && zt != 2 && zt != 3)                   
  57   2                      {
  58   3                          if(key10 == 0)                   //检测到个位键按下
  59   3                              {               
  60   4                                  k10 = 1;                     
  61   4                              if(++s10 > 9)
  62   4                              {
  63   5                                  s10 = 0;
  64   5                                      }                               
  65   4                              if(s1 != 0 || s10 != 0)zt = 1;
  66   4                                          else zt = 0;
  67   4                              }
  68   3                      }
  69   2                      if(k10 == 1 && key10 == 1)k10 = 0;     //松开个位键
  70   2      
  71   2                      //状态辨别
  72   2                      if(s1 == 0 && s10 == 0)zt = 0;
  73   2                      //keystart键检测
  74   2                      if(ks == 0 && zt != 0)                   
  75   2                      {
  76   3                          if(keystart == 0)                   //检测到start键按下
  77   3                              {               
  78   4                                  ks = 1;                                 
  79   4                              if(zt == 1)
  80   4                                      {
  81   5                                          zt = 2;
  82   5                                              TR0 = 1;
  83   5                                      }
  84   4                              else if(zt == 2)
  85   4                                      {
  86   5                                          zt = 3;
  87   5                                              TR0 = 0;
  88   5                                      }
  89   4                              else if(zt == 3)zt = 0;
  90   4                              }
  91   3                      }
  92   2                      if(ks == 1 && keystart == 1)ks = 0;     //松开start键
  93   2                      if(zt == 2)
  94   2                      {
  95   3                          if(TF0 == 1)
  96   3                              {
  97   4                                  TF0 = 0;
  98   4                                      if(++t1 >= 10000)
  99   4                                      {
 100   5                                          t1 = 0;
 101   5                                              if(--s1 < 0)
 102   5                                              {
 103   6                                                  s1 = 9;
 104   6                                                      if(--s10 < 0)
 105   6                                                      {       
 106   7                                                          TR0 = 0;
 107   7                                                          zt = 0;
 108   7                                                  }
 109   6                                              }
 110   5                                      }
 111   4                              }
 112   3                      }
 113   2              } 
 114   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
C51 COMPILER V7.50   TIME                                                                  07/13/2007 16:59:01 PAGE 3   

   CODE SIZE        =    327    ----
   CONSTANT SIZE    =     10    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2      13
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       3
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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