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

📄 main.lst

📁 此程序是单片机进行模数转换的程序
💻 LST
字号:
C51 COMPILER V8.02   MAIN                                                                  03/13/2008 15:39:35 PAGE 1   


C51 COMPILER V8.02, 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          //===========================================================
   2          //
   3          //
   4          // COPY RIGHT
   5          //
   6          //
   7          //===========================================================
   8          
   9          // 文件名:              Main.c
  10          // 创建日期:   080303
  11          // 创建:            神之吻
  12          // 试验难度:   入门级试验
  13          // 描述:                作用:
  14          //                   ds1302芯片的使用
  15          //                      现象:
  16          //                   八段数码管分时显示当前的时间,显示顺序为
  17          //                   年月日->时分秒->星期   
  18          //                      引脚连接关系:
  19          //                          
  20          //------------------------------------------------------------
  21          
  22          
  23          //********************************************************
  24          //*                    头文件
  25          //********************************************************
  26          
  27          #include <reg52.h>
  28          #include "main.h"
  29          #include "ds1302.h"
  30          
  31          //********************************************************
  32          //*                    全局变量声明
  33          //********************************************************
  34          
  35          // 与八段数码管有关的表定义
  36          //---------------------------------------------------
  37          uint8 code sled_table[] = {     // 位编码
  38                                          0x14,   // 0
  39                                          0xD7,   // 1
  40                                          0x4C,   // 2
  41                                          0x45,   // 3
  42                                          0x87,   // 4
  43                                          0x25,   // 5
  44                                          0x24,   // 6
  45                                          0x57,   // 7
  46                                          0x04,   // 8
  47                                          0x05,   // 9
  48                                          0x06,   // A
  49                                          0xA4,   // B
  50                                          0x3C,   // C
  51                                          0xC4,   // D
  52                                          0x2C,   // E
  53                                          0x2E    // F
  54                                          };
  55          
C51 COMPILER V8.02   MAIN                                                                  03/13/2008 15:39:35 PAGE 2   

  56          uint8 code bit_table[] = {      // 位选
  57                                          0xDF,   // bit0
  58                                          0xEF,   // bit1
  59                                          0xF7,   // bit2
  60                                          0xFB,   // bit3
  61                                          0xFD,   // bit4
  62                                          0xFE,   // bit5 
  63                                          };
  64                                          
  65          
  66          //与ds1302采样芯片有关的数据结构
  67          //-----------------------------------------------------
  68          //时间设置缓冲区(BCD码表示)
  69          //设置时间为:08年3月13日,星期四,13时31分30秒
  70          uint8 code SetTimeBuf[] = {
  71                                                                  0xB0,    //秒:这里设为30  注意Bit7(启动位)置为1,因为初始化过程中应当禁止时钟
  72                                                                  0x31,    //分:这里设为31
  73                                                                  0x13,    //时:这里设为13  注意Bit7(AM/PM模式选择位)置为0,选择PM模式(24小时制)
  74                                                                  0x13,    //日:这里设为13日
  75                                                                  0x03,    //月:这里设为3月
  76                                                                  0x04,    //星期:这里设为星期四
  77                                                                  0x08     //年:这里设为08年
  78                                                                  };
  79          
  80          //用于存储从ds1302读取出的当前时间
  81          uint8 code CurTime[7];
  82          
  83          //********************************************************
  84          //*                    函数原型
  85          //********************************************************
  86          
  87          void delay_ms(uint32 ms);
  88          void Display();
  89          
  90          //********************************************************
  91          //*                    main函数
  92          //********************************************************
  93          
  94          main()
  95          {
  96   1          //设置初始时间
  97   1              SetTime(SetTimeBuf);
  98   1              WriteReg(0x80,SetTimeBuf[0]&0xEF);   //将秒寄存器的Bit7清0,记时开始
  99   1          while(TRUE)
 100   1              {
 101   2                      ReadTime(CurTime);  //读取当前时间
 102   2                      Display();          //将读出的时间显示在八段数码管,由于学习板上只有六位八段数码管,因此分时显示
 103   2                                          //显示顺序为 年月日->时分秒->星期
 104   2              }
 105   1      }
 106          
 107          
 108          //*******************************************************
 109          //*                    Display
 110          //*
 111          //*功能描述:将采样结果通过八段数码管显示出来,显示方式为
 112          //          依次显示年月日->时分秒->星期,如此循环往复
 113          //*输入参数:无
 114          //*返回值:无
 115          //*******************************************************
 116          void Display()
 117          {
C51 COMPILER V8.02   MAIN                                                                  03/13/2008 15:39:35 PAGE 3   

 118   1          uint16 i;
 119   1              uint8 TimeTmp;
 120   1              //显示当前年月日
 121   1              for(i = 0;i < 200;i ++)
 122   1              {
 123   2                  //显示当前年
 124   2                      TimeTmp = (SetTimeBuf[6] >> 4);  //取出当前年的十位数字BCD码 
 125   2              BITCHOOSE = bit_table[0]; //第一个数码管显示当前年的十位数字
 126   2                      BITCODE  = sled_table[TimeTmp]; //将选中的八段数码管赋予位编码
 127   2                      TimeTmp = (SetTimeBuf[6] & 0x0F);  //取出当前年的个位数字BCD码  
 128   2                      BITCHOOSE = bit_table[1]; //第二个数码管显示当前年的个位数字
 129   2                      BITCODE  = sled_table[TimeTmp]; //将选中的八段数码管赋予位编码
 130   2                      //显示当前月
 131   2                      TimeTmp = (SetTimeBuf[4] >> 4);  //取出当前月的十位数字BCD码 
 132   2              BITCHOOSE = bit_table[2]; //第三个数码管显示当前月的十位数字
 133   2                      BITCODE  = sled_table[TimeTmp]; //将选中的八段数码管赋予位编码
 134   2                      TimeTmp = (SetTimeBuf[4] & 0x0F);  //取出当前月的个位数字BCD码  
 135   2                      BITCHOOSE = bit_table[3]; //第四个数码管显示当前月的个位数字
 136   2                      BITCODE  = sled_table[TimeTmp]; //将选中的八段数码管赋予位编码
 137   2                      //显示当前日
 138   2                      TimeTmp = (SetTimeBuf[3] >> 4);  //取出当前日的十位数字BCD码 
 139   2              BITCHOOSE = bit_table[4]; //第五个数码管显示当前日的十位数字
 140   2                      BITCODE  = sled_table[TimeTmp]; //将选中的八段数码管赋予位编码
 141   2                      TimeTmp = (SetTimeBuf[3] & 0x0F);  //取出当前日的个位数字BCD码  
 142   2                      BITCHOOSE = bit_table[5]; //第六个数码管显示当前日的个位数字
 143   2                      BITCODE  = sled_table[TimeTmp]; //将选中的八段数码管赋予位编码
 144   2              }
 145   1              //显示当前时分秒
 146   1              for(i = 0;i < 200;i ++)
 147   1              {
 148   2                  //显示当前时
 149   2                      TimeTmp = (SetTimeBuf[2] >> 4);  //取出当前时的十位数字BCD码 
 150   2              BITCHOOSE = bit_table[0]; //第一个数码管显示当前时的十位数字
 151   2                      BITCODE  = sled_table[TimeTmp]; //将选中的八段数码管赋予位编码
 152   2                      TimeTmp = (SetTimeBuf[2] & 0x0F);  //取出当前时的个位数字BCD码  
 153   2                      BITCHOOSE = bit_table[1]; //第二个数码管显示当前时的个位数字
 154   2                      BITCODE  = sled_table[TimeTmp]; //将选中的八段数码管赋予位编码
 155   2                      //显示当前分
 156   2                      TimeTmp = (SetTimeBuf[1] >> 4);  //取出当前分的十位数字BCD码 
 157   2              BITCHOOSE = bit_table[2]; //第三个数码管显示当前分的十位数字
 158   2                      BITCODE  = sled_table[TimeTmp]; //将选中的八段数码管赋予位编码
 159   2                      TimeTmp = (SetTimeBuf[1] & 0x0F);  //取出当前分的个位数字BCD码  
 160   2                      BITCHOOSE = bit_table[3]; //第四个数码管显示当前分的个位数字
 161   2                      BITCODE  = sled_table[TimeTmp]; //将选中的八段数码管赋予位编码
 162   2                      //显示当前秒
 163   2                      TimeTmp = (SetTimeBuf[0] >> 4);  //取出当前日秒的十位数字BCD码 
 164   2              BITCHOOSE = bit_table[4]; //第五个数码管显示当前秒的十位数字
 165   2                      BITCODE  = sled_table[TimeTmp]; //将选中的八段数码管赋予位编码
 166   2                      TimeTmp = (SetTimeBuf[0] & 0x0F);  //取出当前秒的个位数字BCD码  
 167   2                      BITCHOOSE = bit_table[5]; //第六个数码管显示当前秒的个位数字
 168   2                      BITCODE  = sled_table[TimeTmp]; //将选中的八段数码管赋予位编码
 169   2              }
 170   1              //显示当前星期
 171   1              for(i = 0;i < 200;i ++)
 172   1              {
 173   2                  //显示当前时
 174   2                      TimeTmp = (SetTimeBuf[5] >> 4);  //取出当前星期的十位数字BCD码 
 175   2              BITCHOOSE = bit_table[0]; //第一个数码管显示当前时的十位数字
 176   2                      BITCODE  = sled_table[TimeTmp]; //将选中的八段数码管赋予位编码
 177   2                      TimeTmp = (SetTimeBuf[5] & 0x0F);  //取出当前星期的个位数字BCD码  
 178   2                      BITCHOOSE = bit_table[1]; //第二个数码管显示当前时的个位数字
 179   2                      BITCODE  = sled_table[TimeTmp]; //将选中的八段数码管赋予位编码
C51 COMPILER V8.02   MAIN                                                                  03/13/2008 15:39:35 PAGE 4   

 180   2              }
 181   1      
 182   1      
 183   1      }
 184          
 185          //*******************************************************
 186          //*                    delay_ms
 187          //*
 188          //*功能描述:ms级延时函数
 189          //*输入参数:
 190          //*返回值:无
 191          //*******************************************************
 192          void delay_ms(uint32 ms)
 193          {
 194   1              uint32 i, j;
 195   1              for(i = 0; i < ms; i++)
 196   1                      for(j = 0; j < 5000; j++);
 197   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    495    ----
   CONSTANT SIZE    =     36    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      12
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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