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

📄 fff.lst

📁 汽车专用电子钟程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   FFF                                                                   05/01/2008 16:56:16 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE FFF
OBJECT MODULE PLACED IN fff.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE fff.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1                             
   2          /***************************lns主程序snl***************************/
   3          #include <absacc.h>      //包含头文件
   4          #include <reg52.h>        //包含头文件
   5          /***************************数据类型定义***************************/
   6          #define uchar unsigned char      //数据类型定义
   7          /*************************定义变量并初始化*************************/
   8          uchar n=31;                         //定义月份天数变量并初始化
   9          uchar ms=0;                         //定义毫秒变量并初始化
  10          uchar h1=0,m1=0,s1=0;               //定义计时时、分、秒变量并初始化
  11          uchar h2=0,m2=1,s2=1;               //定义定时时、分、秒变量并初始化 
  12          uchar year=7,month=9,day=8;         //定义年、月、日变量并初始化
  13          uchar wday=6;                       //定义星期变量并初始化
  14          uchar *h=&h1,*m=&m1,*s=&s1;         //定义显视位变量并初始化
  15          uchar *p;                           //定义调节指针
  16          uchar k1=0,k2=0,k3=0,k4=0,k5=0;     //定义控制变量并初始化
  17          uchar counter=0;                    //定义铃声节拍变量并初始化
  18          uchar count=0;                      //定义铃声音符变量并初始化
  19          sbit sound=P1^0;                   //定义铃声输出位
  20          uchar a[8]={1,2,3,4,5,6,7};      //定义显视输出位数组并初始化
  21          uchar code tt[12]={
  22                             0x3f,0x06,0x5b,0x4f,0x66,0x6d,
  23                             0x7d,0x07,0x7f,0x6f,0x40,0x00
  24                };                //数码管显视代码
  25          uchar code array[]={
  26                           0x18, 0x30, 0x1C, 0x10, 0x20, 0x40, 0x1C, 0x10, 
  27                           0x18, 0x10, 0x20, 0x10, 0x1C, 0x10, 0x18, 0x40, 
  28                           0x1C, 0x20, 0x20, 0x20, 0x1C, 0x20, 0x18, 0x20,
  29                           0x20, 0x80, 0xFF, 0x00, 0x20, 0x30, 0x1C, 0x10, 
  30               0x18, 0x20, 0x15, 0x20, 0x1C, 0x20, 0x20, 0x20, 
  31               0x26, 0x40, 0x20, 0x20, 0x2B, 0x20, 0x26, 0x20, 
  32               0x20, 0x20, 0x30, 0x80, 0xFF, 0x00, 0x20, 0x20,
  33               0x1C, 0x10, 0x18, 0x10, 0x20, 0x20, 0x26, 0x20,
  34               0x2B, 0x20, 0x30, 0x20, 0x2B, 0x40, 0x20, 0x20,
  35               0x1C, 0x10, 0x18, 0x10, 0x20, 0x20, 0x26, 0x20,
  36               0x2B, 0x20, 0x30, 0x20, 0x2B, 0x40, 0x20, 0x30,
  37               0x1C, 0x10, 0x18, 0x20, 0x15, 0x20, 0x1C, 0x20,
  38               0x20, 0x20, 0x26, 0x40, 0x20, 0x20, 0x2B, 0x20,
  39               0x26, 0x20, 0x20, 0x20, 0x30, 0x80, 0x20, 0x30,
  40               0x1C, 0x10, 0x20, 0x10, 0x1C, 0x10, 0x20, 0x20,
  41               0x26, 0x20, 0x2B, 0x20, 0x30, 0x20, 0x2B, 0x40, 
  42               0x20, 0x15, 0x1F, 0x05, 0x20, 0x10, 0x1C, 0x10, 
  43               0x20, 0x20, 0x26, 0x20, 0x2B, 0x20, 0x30, 0x20,
  44               0x2B, 0x40, 0x20, 0x30, 0x1C, 0x10, 0x18, 0x20,
  45               0x15, 0x20, 0x1C, 0x20, 0x20, 0x20, 0x26, 0x40,
  46               0x20, 0x20, 0x2B, 0x20, 0x26, 0x20, 0x20, 0x20,
  47               0x30, 0x30, 0x20, 0x30, 0x1C, 0x10, 0x18, 0x40,
  48               0x1C, 0x20, 0x20, 0x20, 0x26, 0x40, 0x13, 0x60, 
  49               0x18, 0x20, 0x15, 0x40, 0x13, 0x40, 0x18, 0x80,
  50               0x00, 0x00
  51                          };                  //array[i]=0x00 代表歌曲演唱完毕
  52                                  //array[i]=0xff 代表是休止符
  53          /*******************************************************************
  54          * 函数名称:leap()
  55          * 功    能:计算二月份天数
C51 COMPILER V7.06   FFF                                                                   05/01/2008 16:56:16 PAGE 2   

  56          * 入口参数:year
  57          * 出口参数:无
  58          *******************************************************************/ 
  59          uchar leap(uchar year)     //判断是否闰年并返回二月份的天数
  60                    {          //闰年返回29,平年返回28
  61   1           year+=2000;
  62   1                 if(year%4==0)
  63   1                   {if(year%100==0)
  64   2                      {if(year%400==0)
  65   3                            return 29;
  66   3                       else return 28;
  67   3                      }
  68   2                    else return 29;
  69   2                   }
  70   1                 else return 28;
  71   1                }
  72          /*******************************************************************
  73          * 函数名称:mon()
  74          * 功    能:计算并返回每个月的天数
  75          * 入口参数:month
  76          * 出口参数:无
  77          *******************************************************************/ 
  78          uchar mon(uchar month)           //计算并返回每个月的天数
  79                   {
  80   1                switch(month)
  81   1                      {
  82   2              case 1:
  83   2                       case 3:
  84   2                       case 5:
  85   2                       case 7:
  86   2                       case 8:
  87   2                       case 10:
  88   2                       case 12:return 31;break;      //1,3,5,7,8,10,12月每月31天
  89   2                       case 4:
  90   2                       case 6:
  91   2                       case 9:
  92   2                       case 11:return 30;break;   //4,6,9,11月每月30天
  93   2                       case 2: return leap(year);break;//返回二月份的天数
  94   2                       default:break;
  95   2                      }
  96   1               }
  97          /*******************************************************************
  98          * 函数名称:music()
  99          * 功    能:音乐节拍控制
 100          * 入口参数:无
 101          * 出口参数:无
 102          *******************************************************************/           
 103          void music(void)          //铃声音乐
 104                    {
 105   1            counter++;                //节拍次数计数 
 106   1            if(counter>=array[count+1])     //节拍次数判断
 107   1           {
 108   2            count+=2;        //音符变换
 109   2            counter=0;        //清0节拍数
 110   2               if(count>=192)       //判断是否唱完一曲
 111   2               count=0;        //返回第一个音符
 112   2           } 
 113   1          }
 114          /*******************************************************************
 115          * 函数名称:timer1()
 116          * 功    能:音乐频率设置
 117          * 入口参数:无
C51 COMPILER V7.06   FFF                                                                   05/01/2008 16:56:16 PAGE 3   

 118          * 出口参数:无
 119          *******************************************************************/ 
 120          void timer1(void)interrupt 1 using 1     //音调设置
 121                     {
 122   1            sound=~sound;        //铃声输出
 123   1            TH0=(0xffff-30*array[count])>>8;   //音频设置
 124   1          TL0=(0xffff-30*array[count])&0xff; 
 125   1          }
 126          /*******************************************************************
 127          * 函数名称:timer3()
 128          * 功    能:中断计时
 129          * 入口参数:无
 130          * 出口参数:无
 131          *******************************************************************/              
 132          void timer3(void) interrupt 3 using 3      //计时中断
 133                     {
 134   1            TH1=0xd8;                          //计数器初值重载
 135   1                  TL1=0xef;          //定义单位节拍的延时大小为10ms
 136   1                     
 137   1          if(k5)music();        //调用闹铃音乐lns
 138   1          else TR0=0;         //达到所设闹铃时间长度关铃声
 139   1          
 140   1         if(++ms==100)        //计时一秒钟
 141   1                    {ms=0;    
 142   2                     if(++s1==60)        //计时一分钟
 143   2                       {s1=0;
 144   3            if(++m1==60)       //计时一小时
 145   3                          {m1=0;
 146   4                           if(++h1==24)      //计时一天
 147   4                             {h1=0;
 148   5      
 149   5                              n=mon(month);     //取每月的天数
 150   5      
 151   5                              if(++day>n)      //计时一个月
 152   5                                {day=1;
 153   6                                 if(++month>12)    //计时一年
 154   6                                   {month=1;
 155   7                                    year++;
 156   7                                   }
 157   6                                }
 158   5                              if(++wday>6)     //星期计数
 159   5                                 wday=0;
 160   5                             }
 161   4                          }
 162   3            k5--;            //闹铃时间长度倒记时
 163   3               if(h1==h2&&m1==m2)           //判断是否到定时时刻 
 164   3                          {
 165   4               TR0=1;              //开铃声中断lns
 166   4               k5=s2;              //设置闹铃时间长度

⌨️ 快捷键说明

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