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

📄 clock627.lst

📁 一个本人编写的时钟程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   CLOCK627                                                              07/11/2008 17:01:11 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE CLOCK627
OBJECT MODULE PLACED IN CLOCK627.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CLOCK627.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h>
   2          #include <intrins.h>             
   3          sbit  led1=P1^3;  /* 4位数码管选通引脚 */
   4          sbit  led2=P1^4;          
   5          sbit  led3=P1^6;
   6          sbit  led4=P1^7;
   7          sbit  led2dz=P1^5;  /*小数点 */
   8          
   9          sbit  ls164_ab=P3^0; /*74LS164数据线 */
  10          sbit  ls164_clk=P3^1; /*74LS164时钟线 */
  11          
  12          sbit  key1=P3^5; /*按键1   */
  13          sbit  key2=P3^7; /*按键2   */
  14          
  15          unsigned int DispFlag;  /*显示标识  */
  16          
  17          sbit  key1flag=P3^2;/*按键1状态标识*/
  18          sbit  key2flag=P3^3;/*按键2状态标识*/
  19          
  20          sbit  beep=P1^0; /*蜂鸣器*/
  21          
  22          unsigned int  MSCNT; /*中断次数  */
  23            
  24          unsigned char SecondBuf=0;/*秒缓冲区*/
  25          unsigned char MinuteBuf=0; /*分钟缓冲区*/
  26          unsigned char HourBuf=0;   /*小时缓冲区*/
  27          unsigned char MonthBuf=0;/*月缓冲区*/
  28          unsigned char DayBuf=0; /*日缓冲区*/
  29          
  30          unsigned char DispBuf[15]; //显示缓冲
  31          /************************************************************/
  32          //DispBuf[1]-DispBuf[2]--DispBuf[3]-DispBuf[4]--DispBuf[5]-DispBuf[6]
  33          //分  钟     -------     小 时     -------      天
  34          //DispBuf[7]-DispBuf[8]--DispBuf[9]-DispBuf[10]
  35          //月         -------     秒        
  36          /************************************************************/
  37          
  38          /* led1查表 */
  39          unsigned char Sag_led1[10]=
  40          {0x50,0xF9,0x34,0xB0,0x99,0x92,0x12,0xF8,0x10,0x90}; 
  41          /* led234查表 */
  42          unsigned char Sag_led234[10]=
  43          {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
  44          
  45          /* 延时子程序 */
  46          void Delay(unsigned int val)
  47          { 
  48   1        while (val!=0) val--;  
  49   1      }       
  50          /*清缓冲区子程序*/
  51          void ClearDispBuf()
  52          {
  53   1        char i;
  54   1        for(i=0;i<15;i++)
  55   1         {
C51 COMPILER V8.02   CLOCK627                                                              07/11/2008 17:01:11 PAGE 2   

  56   2           DispBuf[0]=0;
  57   2         }
  58   1      }
  59          
  60                                    
  61          /* 74ls164工作原理子程序 */             
  62          void Send74ls164(unsigned char sag)
  63          { 
  64   1        char i;
  65   1        for(i=1;i<9;i++)
  66   1        {
  67   2         sag=sag<<1 ;
  68   2        if(CY==1)
  69   2         ls164_ab=1;
  70   2        else 
  71   2         ls164_ab=0;
  72   2        ls164_clk=1;
  73   2        ls164_clk=0 ; 
  74   2        }
  75   1      }
  76          
  77          //选定led1
  78          void Select_led1()
  79          { 
  80   1              led1=0;
  81   1              led2=1;
  82   1              led3=1;
  83   1              led4=1;
  84   1      }
  85          //选定led2
  86          void Select_led2()
  87          { 
  88   1          led2=0;
  89   1              led1=1;
  90   1          led3=1;
  91   1              led4=1;
  92   1      }
  93          //选定led3
  94          void Select_led3()
  95          { 
  96   1          led3=0;
  97   1              led1=1;
  98   1              led2=1;
  99   1              led4=1;
 100   1      }
 101          //选定led4
 102          void Select_led4()
 103          { 
 104   1          led4=0;
 105   1              led1=1;
 106   1              led2=1;
 107   1              led3=1;
 108   1      }
 109          
 110          //更新显示缓冲子程序
 111          int UpdateDispBuf()
 112          { //更新"秒"显示缓冲
 113   1              DispBuf[10]=SecondBuf/10;
 114   1              DispBuf[9] =SecondBuf%10;
 115   1        //更新"分钟"显示缓冲
 116   1              DispBuf[2]=MinuteBuf/10;
 117   1              DispBuf[1]=MinuteBuf%10;
C51 COMPILER V8.02   CLOCK627                                                              07/11/2008 17:01:11 PAGE 3   

 118   1        //更新"小时"显示缓冲
 119   1          DispBuf[4]=HourBuf/10;
 120   1              DispBuf[3]=HourBuf%10;
 121   1        //更新"月"显示缓冲
 122   1          DispBuf[8]=MonthBuf/10;
 123   1              DispBuf[7]=MonthBuf%10;
 124   1        //更新"日"显示缓冲
 125   1          DispBuf[6]=DayBuf/10;
 126   1              DispBuf[5]=DayBuf%10;
 127   1      }
 128          
 129          //4位数码管显示子程序
 130          void Disp(void) //2位 5000,4位 2500
 131          {
 132   1           UpdateDispBuf();
 133   1         
 134   1           switch(DispFlag)
 135   1          {
 136   2              case 0: //0x0: //显示 时,分                                                       
 137   2               Select_led4(); 
 138   2               Send74ls164(Sag_led234[DispBuf[1]]);
 139   2               Delay(2500);
 140   2      
 141   2                       Select_led3(); 
 142   2               Send74ls164(Sag_led234[DispBuf[2]]);
 143   2               Delay(2500);
 144   2      
 145   2                       Select_led2(); 
 146   2               Send74ls164(Sag_led234[DispBuf[3]]);
 147   2               Delay(2500);
 148   2      
 149   2                       Select_led1(); 
 150   2               Send74ls164(Sag_led1[DispBuf[4]]);
 151   2               Delay(2500);
 152   2                  break;
 153   2      
 154   2              case 0x1: //显示 月,日
 155   2                       Select_led4(); 
 156   2               Send74ls164(Sag_led234[DispBuf[5]]);
 157   2               Delay(2500);
 158   2      
 159   2                       Select_led3(); 
 160   2               Send74ls164(Sag_led234[DispBuf[6]]);
 161   2               Delay(2500);
 162   2      
 163   2                       Select_led2(); 
 164   2               Send74ls164(Sag_led234[DispBuf[7]]);
 165   2               Delay(2500);
 166   2      
 167   2                       Select_led1(); 
 168   2               Send74ls164(Sag_led1[DispBuf[8]]);
 169   2               Delay(2500);
 170   2                      break;
 171   2      
 172   2              case 0x2: //显示 秒
 173   2                       Select_led4(); 
 174   2               Send74ls164(Sag_led234[DispBuf[9]]);
 175   2               Delay(2500);
 176   2      
 177   2                       Select_led3(); 
 178   2               Send74ls164(Sag_led234[DispBuf[10]]);
 179   2               Delay(2500);
C51 COMPILER V8.02   CLOCK627                                                              07/11/2008 17:01:11 PAGE 4   

 180   2                      break;
 181   2      
 182   2              case 0x3: //显示 月
 183   2                       Select_led2(); 
 184   2               Send74ls164(Sag_led234[DispBuf[7]]);
 185   2               Delay(2500);
 186   2      
 187   2                       Select_led1(); 
 188   2               Send74ls164(Sag_led1[DispBuf[8]]);
 189   2               Delay(2500);
 190   2                  break;
 191   2      
 192   2              case 0x6: //显示 日       
 193   2                       Select_led4(); 
 194   2               Send74ls164(Sag_led234[DispBuf[5]]);
 195   2               Delay(2500);

⌨️ 快捷键说明

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