📄 ds1302.lst
字号:
186 1 static unsigned char a=0;
187 1 static unsigned char b=0;
188 1 static unsigned char c=0;
189 1
190 1 /*判断数码管动态扫描值*/
191 1 switch(a)
192 1 {
193 2 case 0:/*处理数码管第一位*/
194 2 LED7D_STATUS=1;/*设置数码管第四位为无效*/
195 2 LED7A_STATUS=0;/*设置数码管第一位位有效*/
196 2 break;
197 2
198 2 case 1:/*处理数码管第二位*/
199 2 LED7A_STATUS=1;/*设置数码管第一位为无效*/
200 2 LED7B_STATUS=0;/*设置数码管第二位位有效*/
201 2 break;
202 2
203 2 case 2:/*处理数码管第三位*/
204 2 LED7B_STATUS=1;/*设置数码管第二位为无效*/
205 2 LED7C_STATUS=0;/*设置数码管第三位位有效*/
206 2 break;
207 2
208 2 case 3:/*处理数码管第四位*/
209 2 LED7C_STATUS=1;/*设置数码管第三位为无效*/
210 2 LED7D_STATUS=0;/*设置数码管第四位位有效*/
211 2 break;
212 2 }
213 1
214 1 LED7_STATUS=m_ucLedTab[m_ucLedBuf[a]];/*将显示码送数码管状态引脚*/
215 1
216 1 /*0.5秒改变一次数码管上两点显示状态*/
217 1 b++;
218 1 if(b>100)
219 1 {
220 2 c=1-c;
221 2 b=0;
222 2 }
223 1 P0_7=c;
224 1
225 1 a++;/*数码管动态扫描值加1,若该值4则置为0*/
226 1 if(a>3)
227 1 a=0;
228 1
229 1 }
230
231 /*****************************************************************************
232 名称: Ds1302WriteChar
233 说明: DS1302写字节
234 参数: unsigned char ucData 数据
235 返回: 无
236 *****************************************************************************/
237 void Ds1302WriteChar(unsigned char ucData)
238 {
239 1 unsigned char a;
240 1
241 1 ACC=ucData;
C51 COMPILER V7.20 DS1302 03/24/2007 01:03:02 PAGE 5
242 1 for(a=8;a>0;a--)
243 1 {
244 2 DS1302_PIN_IO=ACC0;
245 2 DS1302_PIN_CLK=1;
246 2 DS1302_PIN_CLK=0;
247 2 ACC=ACC>>1;
248 2 }
249 1 }
250
251 /*****************************************************************************
252 名称: Ds1302ReadChar
253 说明: DS1302读字节
254 参数: 无
255 返回: unsigned char 返回数据
256 *****************************************************************************/
257 unsigned char Ds1302ReadChar(void)
258 {
259 1 unsigned char a;
260 1
261 1 for(a=8;a>0;a--)
262 1 {
263 2 ACC=ACC>>1;
264 2 ACC7=DS1302_PIN_IO;
265 2 DS1302_PIN_CLK=1;
266 2 DS1302_PIN_CLK=0;
267 2 }
268 1
269 1 return ACC;
270 1 }
271
272 /*****************************************************************************
273 名称: Ds1302Write
274 说明: DS1302写操作
275 参数: unsigned char ucAddr 地址,unsigned char ucData 数据
276 返回: 无
277 *****************************************************************************/
278 void Ds1302Write(unsigned char ucAddr, unsigned char ucData)
279 {
280 1 DS1302_PIN_RST = 0;
281 1 DS1302_PIN_CLK = 0;
282 1 DS1302_PIN_RST = 1;
283 1 Ds1302WriteChar(ucAddr);
284 1 Ds1302WriteChar(ucData);
285 1 DS1302_PIN_CLK = 1;
286 1 DS1302_PIN_RST = 0;
287 1 }
288
289 /*****************************************************************************
290 名称: Ds1302Read
291 说明: DS1302读操作
292 参数: unsigned char ucAddr 地址
293 返回: unsigned char 返回数据
294 *****************************************************************************/
295 unsigned char Ds1302Read(unsigned char ucAddr)
296 {
297 1 unsigned char ucData;
298 1
299 1 DS1302_PIN_RST = 0;
300 1 DS1302_PIN_CLK = 0;
301 1 DS1302_PIN_RST = 1;
302 1 Ds1302WriteChar(ucAddr);
303 1 ucData = Ds1302ReadChar();
C51 COMPILER V7.20 DS1302 03/24/2007 01:03:02 PAGE 6
304 1 DS1302_PIN_CLK = 1;
305 1 DS1302_PIN_RST = 0;
306 1
307 1 return(ucData);
308 1 }
309
310 /*****************************************************************************
311 名称: Ds1302Set
312 说明: 设置DS1302时间参数
313 参数: unsigned char *pucData 时间参数
314 pucData[0]: 秒
315 pucData[1]: 分
316 pucData[2]: 时
317 pucData[3]: 日
318 pucData[4]: 月
319 pucData[5]: 星期
320 pucData[6]: 年
321 返回: 无
322 *****************************************************************************/
323 void Ds1302Set(unsigned char *pucData)
324 {
325 1 unsigned char a;
326 1 unsigned char ucAddr=0x80;
327 1
328 1 Ds1302Write(0x8e,0x00);
329 1 for(a=7;a>0;a--)
330 1 {
331 2 Ds1302Write(ucAddr,*pucData);
332 2 pucData++;
333 2 ucAddr+=2;
334 2 }
335 1 Ds1302Write(0x8e,0x80);
336 1 }
337
338 /*****************************************************************************
339 名称: Ds1302Set
340 说明: 设置DS1302时间参数
341 参数: unsigned char *pucData 返回时间参数
342 pucData[0]: 秒
343 pucData[1]: 分
344 pucData[2]: 时
345 pucData[3]: 日
346 pucData[4]: 月
347 pucData[5]: 星期
348 pucData[6]: 年
349 返回: 无
350 *****************************************************************************/
351 void Ds1302Get(unsigned char *pucData)
352 {
353 1 unsigned char a;
354 1 unsigned char ucAddr=0x81;
355 1
356 1 for (a=7;a>0;a--)
357 1 {
358 2 pucData[7-a]=Ds1302Read(ucAddr);
359 2 ucAddr+=2;
360 2 }
361 1 }
362
363
C51 COMPILER V7.20 DS1302 03/24/2007 01:03:02 PAGE 7
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 371 ----
CONSTANT SIZE = 17 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 7 9
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 + -