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

📄 main.lst

📁 <基于单片机的数字钟设计> 个人做的毕业设计,带Protel图,源代码用proteus软件仿真通过,附有毕设论文
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   MAIN                                                                  06/06/2007 14:25:55 PAGE 1   


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

line level    source

   1          #include <reg52.h>        
   2          #include <absacc.h>       
   3          #define  uint unsigned int       
   4          #define  uchar unsigned char 
   5          //
   6          #define DPSEC 0                                                 //Clock[DPSEC]数组的元素0,存放时钟时间 DPSEC:Second  
   7          #define DPMIN 1                                                 //Clock[DPMIN]数组的元素1,存放时钟时间 DPMIN:minute  
   8          #define DPHOUR 2                                                //Clock[DPHOUR]数组的元素2,存放时钟时间 DPHOUR:hour  
   9          #define WHMILSEC 0                                              //Watch[WHMILSEC]数组的元素0,存放秒表时间 WHMILSEC:milliSecond  
  10          #define WHSEC 1                                                 //Watch[WHSEC]数组的元素1,存放秒表时间 WHSEC:Second
  11          
  12          #define KEYMIN 14                                               //按键号:分钟加一
  13          #define KEYHOUR  13                                             //按键号:小时加一
  14          #define KEYSTARPRESS 11                                 //按键号:秒表启动/停止
  15          
  16          #define CLOCKMODE 0                                             //时钟模式 
  17          
  18          //定义管脚 
  19          sbit K0=P1^0;                                                   //时钟分钟调整键
  20          sbit K1=P1^1;                                                   //时钟小时调整键
  21          sbit K2=P1^2;                                                   //秒表启动停止键
  22          sbit K4=P3^2;                                                   //时钟/秒表状态切换键
  23          sbit BELL=P1^7;                                                 //响闹输出端
  24          uchar data ClockMode=CLOCKMODE;                 //时钟/秒表模式标记位-CLOCKMODE:时钟 1:秒表
  25          uchar data SwitchClockMode=0;                   //时钟/秒表状态切换标记-0:没有发生过切换1:发生过切换
  26          uchar data DecSec=0;                                    //秒的分频位
  27          uchar data Refersh=6;                                   //数码管个数
  28          uchar data Clock[3]={0,0,0};                    //存放时钟时间(依次是秒,分,时)
  29          uchar data Watch[2]={0,0};                              //存放秒表时间(依次是百分秒,秒,分)             
  30          uchar data Buffer[6]={0,0,0,0,0,0};     //显示缓冲区(依次从低位到高位,共6位数码管)      
  31          uchar code TABLE[]={0xC0,0xf9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x98,0xbf};  
  32                          //共阳数码管显示"0"-"9","-" 
  33          /*------声明区--------*/  
  34          void delay();                           //显示延时函数
  35          void addTime(uchar mode);               //调整时间时加1子函数
  36          uchar key();                                                    //按键函数
  37          void bell(void);                                                //闹铃函数
  38          void clockDisplay( uchar ClockMode );                           //显示函数
  39          
  40          void main(void)                                                 //主函数体
  41          {                                 
  42   1              uchar data keyLockFlag=0;                       //按键延迟锁标记位,1:表示锁定
  43   1              uchar data keyLock=0;                           //
  44   1              uchar data keyValue;                            //键值暂存
  45   1              uchar data startWatch=1;                        //秒表状态
  46   1              EA=1;EX0=1;ET0=1;ET1=1;ET2=1;           //开总中断源,开外部中断1,开Timer0,Timer1中断   
  47   1              IT0=1;                                                          //下降沿触发  
  48   1          TMOD=0x11;                          //T1方式1计数,T0方式1计时      
  49   1          TH0=0X54;TL0=0;                             //初始化计数器0初值                     
  50   1              TH1=0X10;TL1=0;                                 //初始化计数器1初值
  51   1              TH1=0;TL1=0;                            //初始化计数器1初值                     
  52   1              TR0=1;TR1=0;TR2=1;                                      //启动定时器
  53   1                                              
  54   1          while(1)                                                                    //主循环
  55   1          {
C51 COMPILER V7.50   MAIN                                                                  06/06/2007 14:25:55 PAGE 2   

  56   2              //-----------时钟模式------------//
  57   2                      while( ClockMode == CLOCKMODE )                 //如果选择时钟模式
  58   2                      {       
  59   3                              if( SwitchClockMode == 1  )                             //如果时钟/秒表状态切换
  60   3                              {
  61   4                                      clockDisplay( CLOCKMODE );                      //显示
  62   4                                      SwitchClockMode=0;                                      //清除切换标记位
  63   4                              }
  64   3      
  65   3                              keyValue=key();  
  66   3                      switch(keyValue)                                                //按键跳转
  67   3                      {                          
  68   4                              case KEYMIN:                            //时钟按键分调整程序       
  69   4                      {       
  70   5                                              keyLockFlag=1;                                  //按键调节时钟后,时钟不是立刻走时,而是等待2秒钟
  71   5                              TR0=0;                                                  //关闭定时器,时钟停止运行       
  72   5                              addTime(keyValue);                      //调用调节时钟加1函数   
  73   5                                              delay();delay();delay();                                                                                  
  74   5                      } break;        
  75   4                      case KEYHOUR:                           //时钟按键小时调整程序  
  76   4                      {
  77   5                                              keyLockFlag=1;
  78   5                              TR0=0;                                                  
  79   5                              addTime(keyValue);                      //调用调节时钟加1函数   
  80   5                                              delay();delay();delay();                                                                                  
  81   5                      } break;        
  82   4                                      default :break;
  83   4                               }
  84   3                              if(keyLockFlag == 1)                                    //按键延迟锁延迟约两秒
  85   3                              {       
  86   4                                      if(++keyLock == 20 )
  87   4                                      {       
  88   5                                              keyLockFlag=0;keyLock=0;
  89   5                                              TR0=1;                                                  //时钟设置完毕开始运行
  90   5                                      }
  91   4                              }
  92   3                              clockDisplay( ClockMode );                              //刷新时钟显示
  93   3      
  94   3                      } 
  95   2      
  96   2              //-----------秒表模式------------//
  97   2                      while( ClockMode != CLOCKMODE )                         //如果选择秒表模式
  98   2                      {
  99   3                              if( SwitchClockMode == 1 )                              //如果时钟/秒表状态切换
 100   3                              {
 101   4                                      Buffer[0]=0;                                            //显示'-'       
 102   4                                      Buffer[1]=0;    
 103   4                              Buffer[2]=0;              
 104   4                              Buffer[3]=0;      
 105   4                              Buffer[4]=10;           
 106   4                      Buffer[5]=10;  
 107   4                                      Watch[WHMILSEC]=0;                              //
 108   4                      Watch[WHSEC]=0;                                         //预置秒表值
 109   4      
 110   4                                      TR1=0;
 111   4                                      SwitchClockMode=0;                                      //清除切换标记位        
 112   4                              }
 113   3      
 114   3                              keyValue=key();  
 115   3                      if( keyValue == KEYSTARPRESS )                  //如果秒表启动停止按键按下
 116   3                              {       
 117   4                                      if( startWatch == 0 )
C51 COMPILER V7.50   MAIN                                                                  06/06/2007 14:25:55 PAGE 3   

 118   4                                      {
 119   5                                              TR1=1;                                                          //启动定时器
 120   5                                              startWatch=1;
 121   5                                      }
 122   4                                      else
 123   4                                      {
 124   5                                              TR1=0;
 125   5                                              startWatch=0;
 126   5                                      }
 127   4                                      delay();delay();delay();delay();delay();delay();                                                                                  
 128   4                              }
 129   3      
 130   3                              clockDisplay( ClockMode );                                                      //显示
 131   3              }
 132   2          }    
 133   1      }       
 134          void time0(void) interrupt 1 using 2
 135          {       
 136   1              TH0=0X112;               
 137   1              TL0=0x30;                                                                               //计时器放入预置时间,大概10毫秒
 138   1              DecSec++;
 139   1              if(DecSec==16)
 140   1              {       DecSec=0;
 141   2                      Clock[DPSEC]++;                                 //秒位加1        
 142   2                      if(Clock[DPSEC]==60)                                    //1分钟到 
 143   2                      {                                                                                                  
 144   3                              Clock[DPSEC]=0;                                 //秒位清0 
 145   3                              Clock[DPMIN]++;                                 //分位加1 
 146   3                              if(Clock[DPMIN]==60)                            //1小时到 
 147   3                              {                                                 

⌨️ 快捷键说明

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