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

📄 可加减计数时钟.lst

📁 单片机写的程序都含有Protues仿真结果
💻 LST
字号:
C51 COMPILER V7.10   可加减计数时钟                                                        05/16/2008 06:28:19 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE 可加减计数时钟
OBJECT MODULE PLACED IN .\可加减计数时钟.obj
COMPILER INVOKED BY: F:\KeilC安装软件\安装\C51\BIN\C51.EXE F:\c语言练习\可加减计数时钟.c BROWSE DEBUG OBJECTEXTEND PRINT
                    -(.\可加减计数时钟.lst) OBJECT(.\可加减计数时钟.obj)

line level    source

   1          #include"reg51.h"
   2          #define uchar unsigned char
   3          #define uint unsigned int 
   4          #define Hidden 0x10
   5          uchar code disptab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb};   //显示器位
   6          uchar code zcodetab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, //共阴极0~9
   7          0x77,0x83,0xc6,0xa1,0x86,0x84,0x00};    //字码列表
   8          uchar buf[6];                   //显示器及字码缓冲
   9          uchar setseccount;   //预置值
  10          uchar seccount;    //秒数值
  11          uchar code th0=63266/256;
  12          uchar code tl0=63266%256; 
  13          bit ks;         //开始  
  14          bit jiajian;  //加减计数            
  15          void delay(uchar del)           
  16          {                                                       
  17   1              uchar i;                                
  18   1              for(;del>0;del--)
  19   1                      for(i=0;i<125;i++)
  20   1                              {;}                                                        
  21   1      }
  22          void ajcl(uchar jz)             //按键处理
  23          {
  24   1                      if((jz&0x10)==0) 
  25   1                              ks=1;             //开始
  26   1                      if((jz&0x04)==0) jiajian=1;        // 计数加
  27   1                      if((jz&0x08)==0) jiajian=0;        //计数减
  28   1                      if((jz&0x40)==0)  //十位加一
  29   1                              {       
  30   2                                  ks=0;
  31   2                                      buf[4]++;
  32   2                                      if(buf[4]>=6) buf[4]=0;
  33   2                                      setseccount=buf[4]*10+buf[5];
  34   2                                      seccount=setseccount;
  35   2                              }
  36   1                      if((jz&0x80)==0)           //个位减一
  37   1                              {
  38   2                                      ks=0;
  39   2                                      buf[5]++;
  40   2                                      if(buf[5]>=10) buf[5]=0; 
  41   2                                      setseccount=buf[4]*10+buf[5];
  42   2                                      seccount=setseccount;
  43   2                              }
  44   1                  if((jz&0x20)==0) ks=0;       //停止
  45   1      }
  46          uchar aj()                      //按键函数
  47          {       uchar jz;
  48   1              uchar t;
  49   1              P3|=0xfc;
  50   1              jz=P3;
  51   1              jz|=0x03;
  52   1              if((jz|=0x03)==0xff) return(0);
  53   1              delay(10);
  54   1              jz=P3;
C51 COMPILER V7.10   可加减计数时钟                                                        05/16/2008 06:28:19 PAGE 2   

  55   1              if((jz|=0x03)==0xff) return(0);
  56   1              else
  57   1                      for(;;)
  58   1                      {
  59   2                              t=P3;
  60   2                              if((t|=0x03)==0xff)
  61   2                                      break;
  62   2                      }
  63   1              return(jz);
  64   1      }
  65          void timer0() interrupt 1
  66          {
  67   1              static uchar count=0;   // 位计数
  68   1              static uint counter=0;  //秒计数  这里的 数据类型匹配
  69   1          uint mz=400;                   //一秒计数值
  70   1              uchar t;                          //中间变量
  71   1              TH0=th0;
  72   1              TL0=tl0; 
  73   1              t=disptab[count];            
  74   1              P2|=0xfc;
  75   1              P2&=t;
  76   1              t=buf[count];
  77   1              t=zcodetab[t];
  78   1              P0=t;
  79   1              count++;
  80   1              if(count>=6) count=0;
  81   1              counter++;
  82   1              if(counter>=mz)
  83   1              {
  84   2                      counter=0;
  85   2                      if(ks)                           //这里是 预置值的关键 只有ks=1 秒计数 才开始动作
  86   2              {
  87   3                          if(!jiajian)
  88   3                                      if((seccount--)==0) seccount=setseccount;
  89   3                              if(jiajian)
  90   3                                      if((seccount++)>=59) seccount=setseccount;
  91   3      
  92   3                  }
  93   2              }
  94   1      }       
  95          void main()
  96          {       uchar i,jz;
  97   1              TMOD=0x01;
  98   1              TH0=th0;
  99   1              TL0=tl0;
 100   1              EA=1;
 101   1              ET0=1;
 102   1              TR0=1;
 103   1              for(i=0;i<5;i++)         //前4位消隐 和初始第四位消隐
 104   1              buf[i]=Hidden;
 105   1              buf[4]=seccount/10;
 106   1              buf[5]=seccount%10;                                             
 107   1              for(;;)
 108   1              {       
 109   2                      jz=aj();
 110   2                      if(jz)
 111   2                              ajcl(jz);
 112   2                      buf[4]=seccount/10;
 113   2                      buf[5]=seccount%10;     
 114   2              }
 115   1      }
 116                          
C51 COMPILER V7.10   可加减计数时钟                                                        05/16/2008 06:28:19 PAGE 3   



MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    366    ----
   CONSTANT SIZE    =     25    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     11    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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