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

📄 dy1clock.lst

📁 《爱上单片机》配书光盘
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V6.12  DY1CLOCK                                                               04/27/2009 00:06:27 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE DY1CLOCK
OBJECT MODULE PLACED IN DY1CLOCK.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DY1CLOCK.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 ^ 7;//
  18          sbit leda2 = P1 ^ 6;//
  19          sbit ledb1 = P1 ^ 4;//
  20          sbit ledb2 = P1 ^ 2;//
  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 ^ 3;//
  28          sbit ledf2 = P3 ^ 7;// 
  29          sbit ledg1 = P1 ^ 5;// 
  30          sbit ledg2 = P1 ^ 1;//
  31          sbit ledh = P1 ^ 0;//
  32          
  33          sbit key1 = P1 ^ 7;//
  34          sbit key2 = P1 ^ 6;//
  35          
  36          sbit LEDA = P1;//    
  37          sbit LEDB = P3;//    
  38           
  39          uchar data sec = 0;      // 秒计数器(00s-59s)   
  40          uchar data min = 1;      // 分计数器(00m-59m)   
  41          uchar data hou = 2;      // 时计数器)00h-23h)   
  42            
  43          uchar data cou  = 0;     // 软计数器,对10ms时基信号累加到1s   
  44            
  45          uchar data key_v = 0;    // 存储键值   
  46          uchar data key_t = 0;    // 按键扫描中临时存储键值   
  47          
  48          uchar data MENU  = 0;     //  
  49          uchar data SP_DIS  = 100;     //  
  50          /**********************************************************************************************/	
  51          
  52          void tiem0(void) interrupt 1   // T/C0中断服务程序(产生10ms时基信号)   
  53          {   
  54   1          cou++;                     // 软计数器加1   
  55   1          if(cou > 99)             // 计数值到100(1s)   
C51 COMPILER V6.12  DY1CLOCK                                                               04/27/2009 00:06:27 PAGE 2   

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

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

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

⌨️ 快捷键说明

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