📄 ds1302.lst
字号:
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 + -