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

📄 dy1clock_v1.01.lst

📁 《爱上单片机》配书光盘
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V6.12  DY1CLOCK_V1_01                                                         04/28/2009 20:48:57 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE DY1CLOCK_V1_01
OBJECT MODULE PLACED IN DY1CLOCK_V1.01.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DY1CLOCK_V1.01.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /**************************************************************************  
   2          * 标题: 一位数码时钟 
   3          * 作者: 杜洋  
   4          * 日期: 2009.4.26  
   5          * 软件: Keil C51  
   6          * 芯片: STC12C2052  
   7          * 说明: 用一位数码LED管显示时钟
   8          * 日志: 
   9          20090426 首次完成,代码有一些笨重,不过基本的显示和调时功能已经实现。
  10             
  11          **************************************************************************/  
  12            
  13          #include <reg51.h>   
  14          #include <intrins.h>   
  15          #define uchar unsigned char   
  16          
  17          sbit leda1 = P1 ^ 4;//
  18          sbit leda2 = P1 ^ 3;//
  19          sbit ledb1 = P1 ^ 1;//
  20          sbit ledb2 = P1 ^ 0;//
  21          sbit ledc1 = P3 ^ 5;//
  22          sbit ledc2 = P3 ^ 4;//
  23          sbit ledd1 = P3 ^ 2;//
  24          sbit ledd2 = P3 ^ 3;//
  25          sbit lede1 = P3 ^ 0;//
  26          sbit lede2 = P3 ^ 1;//
  27          sbit ledf1 = P1 ^ 6;//
  28          sbit ledf2 = P1 ^ 7;// 
  29          sbit ledg1 = P1 ^ 5;// 
  30          sbit ledg2 = P1 ^ 2;//
  31          
  32          sbit key1 = P1 ^ 4;//
  33          sbit key2 = P1 ^ 3;//
  34           
  35          uchar data sec = 0;      // 秒计数器(00s-59s)   
  36          uchar data min = 1;      // 分计数器(00m-59m)   
  37          uchar data hou = 2;      // 时计数器)00h-23h)   
  38            
  39          uchar data cou  = 0;     // 软计数器,对10ms时基信号累加到1s   
  40            
  41          uchar data key_v = 0;    // 存储键值   
  42          uchar data key_t = 0;    // 按键扫描中临时存储键值   
  43          
  44          uchar data MENU  = 0;     //  
  45          uchar data SP_DIS  = 100;     //  
  46          
  47          #define SP2 1300  //数字之间的停留时间
  48          #define SP3 10000  //一个循环显示结束后的间隔时间
  49          #define SP4 2000  //分隔点的显示时间
  50            
  51          /**********************************************************************************************/	
  52          
  53          void tiem0(void) interrupt 1   // T/C0中断服务程序(产生10ms时基信号)   
  54          {   
  55   1          cou++;                     // 软计数器加1   
C51 COMPILER V6.12  DY1CLOCK_V1_01                                                         04/28/2009 20:48:57 PAGE 2   

  56   1          if(cou > 99)             // 计数值到100(1s)   
  57   1          {   
  58   2              cou = 0;               // 软计数器清零   
  59   2              sec++;                 // 秒计数器加1(进位10ms*100=1s)   
  60   2              if(sec > 59)          // 秒计数值到60   
  61   2              {   
  62   3                  sec = 0;           // 秒计数器清零   
  63   3                  min++;             // 分计数器加1(进位60s=1m)   
  64   3                  if(min > 59)      // 分计数到60   
  65   3                  {   
  66   4                      min = 0;       // 分计数器清零   
  67   4                      hou++;         // 时计数器加1(进位60m=1h)   
  68   4                      if(hou > 23)  // 时计数到23   
  69   4                          hou = 0;   // 时计数器清零   
  70   4                  }   
  71   3              }   
  72   2          }   
  73   1          TH0 = 0xd8;                // 重置定时常数   
  74   1          TL0 = 0xf0;   
  75   1      }   
  76          /**********************************************************************************************/	
  77          void delay_ms(unsigned int a){//-延时函数 1MS/次	
  78   1      	unsigned char i;
  79   1      	while( --a != 0){		
  80   2      		for(i = 0; i < 125; i++);  //一个 ; 表示空语句,CPU空转。
  81   2      	}   				   //i 从0加到125,CPU大概就耗时1毫秒
  82   1      }
  83          
  84          void delay_P1(void){       //     
  85   1      	delay_ms(SP_DIS); 
  86   1      }
  87          void delay_P2(void){       //
  88   1      	delay_ms(SP2); 
  89   1      }
  90          /**********************************************************************************************/	
  91          
  92          void displayN(void){       //     
  93   1      	ledc2=1;delay_P1();ledd2=1;delay_P1();
  94   1      	ledc1=1;delay_P1();ledd1=1;delay_P1();
  95   1      	lede2=1;delay_P1();ledg2=1;delay_P1();
  96   1      	lede1=1;delay_P1();ledg1=1;delay_P1();
  97   1      	ledb2=1;delay_P1();
  98   1      	ledb1=1;delay_P1();ledf2=1;delay_P1();
  99   1      	leda2=1;delay_P1();ledf1=1;delay_P1();
 100   1      	leda1=1; 
 101   1      }
 102          void displayN2(void){       //     
 103   1      	ledc2=1;ledd2=1;
 104   1      	ledc1=1;ledd1=1;
 105   1      	lede2=1;ledg2=1;
 106   1      	lede1=1;ledg1=1;
 107   1      	ledb2=1;ledb1=1;ledf2=1;
 108   1      	leda2=1;ledf1=1;leda1=1; 
 109   1      }
 110          
 111          void display1(void){       //笔画1     
 112   1      	ledb1=0;delay_P1();ledb2=0;delay_P1();
 113   1      	ledc1=0;delay_P1();ledc2=0;delay_P1();
 114   1      	leda1=1;leda2=1;
 115   1      	ledd1=1;ledd2=1;
 116   1      	lede1=1;lede2=1;
 117   1      	ledf1=1;ledf2=1;
C51 COMPILER V6.12  DY1CLOCK_V1_01                                                         04/28/2009 20:48:57 PAGE 3   

 118   1      	ledg1=1;ledg2=1;  
 119   1      }
 120          void display2(void){       //       
 121   1      	leda1=0;delay_P1();leda2=0;delay_P1();
 122   1      	ledb1=0;delay_P1();ledb2=0;delay_P1();
 123   1      	ledg2=0;delay_P1();ledg1=0;delay_P1();  
 124   1      	lede1=0;delay_P1();lede2=0;delay_P1();
 125   1      	ledd1=0;delay_P1();ledd2=0;delay_P1();
 126   1      	ledc1=1;ledc2=1;
 127   1      	ledf1=1;ledf2=1;
 128   1      }
 129          void display3(void){       //       
 130   1      	leda1=0;delay_P1();leda2=0;delay_P1();
 131   1      	ledb1=0;delay_P1();ledb2=0;delay_P1();
 132   1      	ledg1=0;delay_P1();ledg2=0;delay_P1();  
 133   1      	ledc1=0;delay_P1();ledc2=0;delay_P1();
 134   1      	ledd2=0;delay_P1();ledd1=0;delay_P1();
 135   1      	lede1=1;lede2=1;
 136   1      	ledf1=1;ledf2=1;
 137   1      }
 138          void display4(void){       //       
 139   1      	ledf1=0;delay_P1();ledf2=0;delay_P1();
 140   1      	ledg1=0;delay_P1();ledg2=0;delay_P1();  
 141   1      	ledb1=0;delay_P1();ledb2=0;delay_P1();
 142   1      	ledc1=0;delay_P1();ledc2=0;delay_P1();
 143   1      	leda1=1;leda2=1;
 144   1      	ledd1=1;ledd2=1;
 145   1      	lede1=1;lede2=1;
 146   1      }
 147          void display5(void){       //       
 148   1      	leda2=0;delay_P1();leda1=0;delay_P1();
 149   1      	ledf1=0;delay_P1();ledf2=0;delay_P1();
 150   1      	ledg1=0;delay_P1();ledg2=0;delay_P1();  
 151   1      	ledc1=0;delay_P1();ledc2=0;delay_P1();
 152   1      	ledd2=0;delay_P1();ledd1=0;delay_P1();
 153   1      	ledb1=1;ledb2=1;
 154   1      	lede1=1;lede2=1;
 155   1      }
 156          void display6(void){       //       
 157   1      	leda2=0;delay_P1();leda1=0;delay_P1();
 158   1      	ledf1=0;delay_P1();ledf2=0;delay_P1();
 159   1      	lede1=0;delay_P1();lede2=0;delay_P1();
 160   1      	ledd1=0;delay_P1();ledd2=0;delay_P1();
 161   1      	ledc2=0;delay_P1();ledc1=0;delay_P1();
 162   1      	ledg2=0;delay_P1();ledg1=0;delay_P1();  
 163   1      	ledb1=1;ledb2=1;
 164   1      }
 165          void display7(void){       //       
 166   1      	leda1=0;delay_P1();leda2=0;delay_P1();
 167   1      	ledb1=0;delay_P1();ledb2=0;delay_P1();
 168   1      	ledc1=0;delay_P1();ledc2=0;delay_P1();
 169   1      	ledd1=1;ledd2=1;
 170   1      	lede1=1;lede2=1;
 171   1      	ledf1=1;ledf2=1;
 172   1      	ledg1=1;ledg2=1;  
 173   1      }
 174          void display8(void){       //       
 175   1      	ledb2=0;delay_P1();ledb1=0;delay_P1();
 176   1      	leda2=0;delay_P1();leda1=0;delay_P1();
 177   1      	ledf1=0;delay_P1();ledf2=0;delay_P1();
 178   1      	ledg1=0;delay_P1();ledg2=0;delay_P1();  
 179   1      	ledc1=0;delay_P1();ledc2=0;delay_P1();
C51 COMPILER V6.12  DY1CLOCK_V1_01                                                         04/28/2009 20:48:57 PAGE 4   

 180   1      	ledd2=0;delay_P1();ledd1=0;delay_P1();
 181   1      	lede2=0;delay_P1();lede1=0;delay_P1();
 182   1      }
 183          void display9(void){       //       
 184   1      	ledb2=0;delay_P1();ledb1=0;delay_P1();
 185   1      	leda2=0;delay_P1();leda1=0;delay_P1();
 186   1      	ledf1=0;delay_P1();ledf2=0;delay_P1();
 187   1      	ledg1=0;delay_P1();ledg2=0;delay_P1();  
 188   1      	ledc1=0;delay_P1();ledc2=0;delay_P1();
 189   1      	ledd2=0;delay_P1();ledd1=0;delay_P1();
 190   1      	lede1=1;lede2=1;
 191   1      }
 192          void display0(void){       //       
 193   1      	ledf1=0;delay_P1();ledf2=0;delay_P1();
 194   1      	lede1=0;delay_P1();lede2=0;delay_P1();
 195   1      	ledd1=0;delay_P1();ledd2=0;delay_P1();
 196   1      	ledc2=0;delay_P1();ledc1=0;delay_P1();
 197   1      	ledb2=0;delay_P1();ledb1=0;delay_P1();
 198   1      	leda2=0;delay_P1();leda1=0;delay_P1();
 199   1      	ledg1=1;ledg2=1;  

⌨️ 快捷键说明

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