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

📄 ds1302.lst

📁 STC51系列单片机学习板演示程序(汇编语言) 有详细注释 适合初学单片机的朋友
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.20   DS1302                                                                03/24/2007 01:03:02 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE DS1302
OBJECT MODULE PLACED IN DS1302.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DS1302.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*****************************************************************************
   2                                                          MCU8051学习板演示程序
   3                                                                  
   4                                          (c) Copyright 2007-2007,广州恒芯电子
   5                                                          All Rights Reserved
   6          *****************************************************************************/
   7          
   8          /*****************************************************************************
   9          程序说明
  10          名称: MCU8051学习板演示程序(DS1302测试)
  11          功能: 实现在七段数码管上显示时间
  12          版本:2007-03-01
  13          *****************************************************************************/
  14          
  15          /*****************************************************************************
  16          硬件说明
  17          单片机:   兼容MCS-51单片机/STC89C51
  18          晶振频率: 12MHz
  19          *****************************************************************************/
  20          
  21          #include "regx52.h"
  22          
  23          /****************************************************************************
  24          说明: 程序预定义
  25          *****************************************************************************/
  26          #define LED7A_STATUS P1_0/*数码管第一位控制引脚(0为有效,1为无效)*/
  27          #define LED7B_STATUS P1_1/*数码管第二位控制引脚(0为有效,1为无效)*/
  28          #define LED7C_STATUS P1_2/*数码管第三位控制引脚(0为有效,1为无效)*/
  29          #define LED7D_STATUS P1_3/*数码管第四位控制引脚(0为有效,1为无效)*/
  30          
  31          #define LED7_STATUS     P0/*数码管状态引脚(0为有效,1为无效)*/
  32          
  33          #define DS1302_PIN_CLK  P1_5/*DS1302时钟引脚*/
  34          #define DS1302_PIN_IO   P1_6/*DS1302数据引脚*/
  35          #define DS1302_PIN_RST  P1_7/*DS1302复位引脚*/
  36          
  37          sbit  ACC0 = ACC^0;
  38          sbit  ACC7 = ACC^7;
  39          
  40          /****************************************************************************
  41          说明: 变量定义
  42          *****************************************************************************/
  43          code unsigned char m_ucLedTab[]=
  44          {
  45                  0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90,
  46                  0x88, 0x83, 0xC6, 0xa1 ,0x86 ,0x8e, 0xff
  47          };/*数码管十六进制编码表*/
  48          
  49          unsigned char m_ucLedBuf[4];/*数码管显示值缓存*/
  50                          
  51          /****************************************************************************
  52          名称: Led7Scan()
  53          说明: 数码管动态扫描处理程序    
  54          参数: 无
  55          返回: 无
C51 COMPILER V7.20   DS1302                                                                03/24/2007 01:03:02 PAGE 2   

  56          *****************************************************************************/
  57          void Led7Scan();
  58          
  59          /*****************************************************************************
  60          名称: Ds1302WriteChar
  61          说明: DS1302写字节
  62          参数: unsigned char ucData 数据
  63          返回: 无
  64          *****************************************************************************/
  65          void Ds1302WriteChar(unsigned char ucData); 
  66          
  67          /*****************************************************************************
  68          名称: Ds1302ReadChar
  69          说明: DS1302读字节
  70          参数: 无
  71          返回: unsigned char 返回数据
  72          *****************************************************************************/
  73          unsigned char Ds1302ReadChar(void); 
  74          
  75          /*****************************************************************************
  76          名称: Ds1302Write
  77          说明: DS1302写操作
  78          参数: unsigned char ucAddr 地址,unsigned char ucData 数据
  79          返回: 无
  80          *****************************************************************************/
  81          void Ds1302Write(unsigned char ucAddr, unsigned char ucData);
  82          
  83          /*****************************************************************************
  84          名称: Ds1302Read
  85          说明: DS1302读操作
  86          参数: unsigned char ucAddr 地址
  87          返回: unsigned char 返回数据
  88          *****************************************************************************/
  89          unsigned char Ds1302Read(unsigned char ucAddr);
  90          
  91          /*****************************************************************************
  92          名称: Ds1302Set
  93          说明: 设置DS1302时间参数
  94          参数: unsigned char *pucData 时间参数
  95                    pucData[0]: 秒
  96                    pucData[1]: 分
  97                    pucData[2]: 时
  98                    pucData[3]: 日
  99                    pucData[4]: 月
 100                    pucData[5]: 星期
 101                    pucData[6]: 年
 102          返回: 无
 103          *****************************************************************************/
 104          void Ds1302Set(unsigned char *pucData); 
 105          
 106          /*****************************************************************************
 107          名称: Ds1302Set
 108          说明: 设置DS1302时间参数
 109          参数: unsigned char *pucData 返回时间参数
 110                    pucData[0]: 秒
 111                    pucData[1]: 分
 112                    pucData[2]: 时
 113                    pucData[3]: 日
 114                    pucData[4]: 月
 115                    pucData[5]: 星期
 116                    pucData[6]: 年
 117          返回: 无
C51 COMPILER V7.20   DS1302                                                                03/24/2007 01:03:02 PAGE 3   

 118          *****************************************************************************/
 119          void Ds1302Get(unsigned char *pucData);
 120          
 121          /*****************************************************************************
 122          程序开始
 123          *****************************************************************************/
 124          void main()
 125          {       
 126   1              unsigned char ucTime[7];/*时间参数*/
 127   1              /*ucTime[0]: 秒*/
 128   1              /*ucTime[1]: 分*/
 129   1              /*ucTime[2]: 时*/
 130   1              /*ucTime[3]: 日*/
 131   1              /*ucTime[4]: 月*/
 132   1              /*ucTime[5]: 星期*/
 133   1              /*ucTime[6]: 年*/
 134   1      
 135   1              /*T0中断设定*/
 136   1              TMOD=0x01;/*使用T0:GATE=0,C/T=0(定时),M1 M0=01(工作方式1)*/
 137   1              TH0=0xec;/*定时时间 50Hz/4 计算公式:10000H - (5 x 1000) = EC78H*/
 138   1              TL0=0x78;
 139   1              ET0=1;/*允许T0中断*/
 140   1              TR0=1;/*使T0工作*/
 141   1              EA=1;/*总中断开启*/
 142   1      
 143   1              /*设置时间当前参数*/
 144   1              ucTime[0]=0x00;
 145   1              ucTime[1]=0x00;
 146   1              ucTime[2]=0x12;
 147   1              ucTime[3]=0x01;
 148   1              ucTime[4]=0x01;
 149   1              ucTime[5]=0x01;
 150   1              ucTime[6]=0x07;
 151   1              Ds1302Set(&ucTime);/*设置时间*/
 152   1      
 153   1              while(1)
 154   1              {       
 155   2                      Ds1302Get(&ucTime);/*获得时间*/
 156   2      
 157   2                      /*将时间参数在数码管上显示*/
 158   2                      m_ucLedBuf[0]=ucTime[2]>>4;
 159   2                      m_ucLedBuf[1]=ucTime[2]&0x0f;
 160   2                      m_ucLedBuf[2]=ucTime[1]>>4;
 161   2                      m_ucLedBuf[3]=ucTime[1]&0x0f;
 162   2              }
 163   1      }
 164          
 165          /*****************************************************************************
 166          名称: Interrupt1Handler
 167          说明: T0中断入口
 168          参数: 无
 169          返回 :无
 170          *****************************************************************************/
 171          void Interrupt1Handler() interrupt 1
 172          {
 173   1              Led7Scan();/*数码管动态扫描处理程序*/
 174   1              TH0=0xec;/*重新设置T0定时值*/
 175   1              TL0=0x78;
 176   1      }
 177          
 178          /****************************************************************************
 179          名称: Led7Scan()
C51 COMPILER V7.20   DS1302                                                                03/24/2007 01:03:02 PAGE 4   

 180          说明: 数码管动态扫描处理程序
 181          参数: 无
 182          返回: 无
 183          *****************************************************************************/
 184          void Led7Scan()
 185          {       

⌨️ 快捷键说明

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