📄 rtc.ls1
字号:
1
194 ; 11:
1/60
195 ; */
196 ; 0x00 /*timer back data倒计数值*/
197 ; };
198 ;
199 ;
200 ; #ifndef SOFT_RTC /*r如果定义了外围硬件实时时钟计数*/
201 ; /****************************************************************************************
**
202 ; *函数名: Int1RTC
203 ; *参数: 无
204 ; *返回值: 无
205 ; *描述:
206 ; *编写: 王绍伟
207 ; *版本信息: V1.0 2003年8月15日
208 ; *****************************************************************************************
*/
209 ; static void Int1RTC(void) interrupt 2
210 ; {
211 ; EA = 0; /*r关闭所有中断*/
212 ; msg_queue_in(MSG_RTC, NONE);
213 ; EA = 1;
214 ; }
215 ; #endif
216 ;
217 ; extern void rtc_pcf8563_init(void)
218
---- 219 RSEG ?PR?rtc_pcf8563_init?RTC
0000 220 rtc_pcf8563_init:
221 USING 0
222 ; SOURCE LINE # 74
223 ; {
224 ; SOURCE LINE # 75
0000 225 ?C0001:
226 ; while(!iic_send_str(PCF8563, 0x00, Pcf8563Init, 16))
227 ; SOURCE LINE # 76
0000 7BFF 228 MOV R3,#0FFH
0002 7A00 F 229 MOV R2,#HIGH (Pcf8563Init)
0004 7900 F 230 MOV R1,#LOW (Pcf8563Init)
0006 900000 F 231 MOV DPTR,#?_iic_send_str?BYTE+05H
0009 7410 232 MOV A,#010H
000B F0 233 MOVX @DPTR,A
000C E4 234 CLR A
000D FD 235 MOV R5,A
000E 7FA2 236 MOV R7,#0A2H
0010 120000 F 237 LCALL _iic_send_str
0013 4009 238 JC ?C0002
239 ; {
240 ; SOURCE LINE # 77
241 ; delay(0x200);
242 ; SOURCE LINE # 78
0015 7F00 243 MOV R7,#00H
A51 MACRO ASSEMBLER RTC 10/31/2003 02:22:24 PAGE 5
0017 7E02 244 MOV R6,#02H
0019 120000 F 245 LCALL _delay
246 ; }
247 ; SOURCE LINE # 79
001C 80E2 248 SJMP ?C0001
001E 249 ?C0002:
250 ; iic_rcv_str(PCF8563, 0x02, g_RTCPool, 2);
251 ; SOURCE LINE # 80
001E 7B00 252 MOV R3,#00H
0020 7A00 F 253 MOV R2,#HIGH (g_RTCPool)
0022 7900 F 254 MOV R1,#LOW (g_RTCPool)
0024 900000 F 255 MOV DPTR,#?_iic_rcv_str?BYTE+05H
0027 7402 256 MOV A,#02H
0029 F0 257 MOVX @DPTR,A
002A FD 258 MOV R5,A
002B 7FA2 259 MOV R7,#0A2H
002D 020000 F 260 LJMP _iic_rcv_str
261 ; END OF rtc_pcf8563_init
262
263 ; }
264 ;
265 ; /****************************************************************************************
**
266 ; *函数名: rtc_init
267 ; *参数: hour
268 ; minute
269 ; second
270 ; *返回值: 无
271 ; *描述: 实时软件时钟计数器初始化
272 ; *编写: 王绍伟
273 ; *版本信息: V1.0 2003年8月15日
274 ; *****************************************************************************************
*/
275 ; extern void rtc_soft_init(byte hour, byte minute, byte second)
276
---- 277 RSEG ?PR?_rtc_soft_init?RTC
0000 278 _rtc_soft_init:
279 USING 0
280 ; SOURCE LINE # 93
281 ;---- Variable 'hour?140' assigned to Register 'R7' ----
282 ;---- Variable 'second?142' assigned to Register 'R3' ----
283 ;---- Variable 'minute?141' assigned to Register 'R5' ----
284 ; {
285 ; SOURCE LINE # 94
286 ; g_RTCMember.hour = hour;
287 ; SOURCE LINE # 95
0000 8F00 F 288 MOV g_RTCMember+02H,R7
289 ; g_RTCMember.minute = minute;
290 ; SOURCE LINE # 96
0002 AF05 291 MOV R7,AR5
0004 8F00 F 292 MOV g_RTCMember+01H,R7
293 ; g_RTCMember.second = second;
294 ; SOURCE LINE # 97
0006 AF03 295 MOV R7,AR3
0008 8F00 F 296 MOV g_RTCMember,R7
297 ; g_RTCPool[0] = g_DAA[g_RTCMember.second];
298 ; SOURCE LINE # 98
000A EF 299 MOV A,R7
000B 900000 F 300 MOV DPTR,#g_DAA
000E 93 301 MOVC A,@A+DPTR
000F F500 F 302 MOV g_RTCPool,A
303 ; g_RTCPool[1] = g_DAA[g_RTCMember.minute];
304 ; SOURCE LINE # 99
0011 E500 F 305 MOV A,g_RTCMember+01H
0013 93 306 MOVC A,@A+DPTR
0014 F500 F 307 MOV g_RTCPool+01H,A
A51 MACRO ASSEMBLER RTC 10/31/2003 02:22:24 PAGE 6
308 ; g_RTCPool[2] = g_DAA[g_RTCMember.hour];
309 ; SOURCE LINE # 100
0016 E500 F 310 MOV A,g_RTCMember+02H
0018 93 311 MOVC A,@A+DPTR
0019 F500 F 312 MOV g_RTCPool+02H,A
313 ; }
314 ; SOURCE LINE # 101
001B 22 315 RET
316 ; END OF _rtc_soft_init
317
318 ;
319 ;
320 ; /****************************************************************************************
**
321 ; *函数名: rtc_process
322 ; *参数: 无
323 ; *返回值: 无
324 ; *描述: 定义时钟从秒->分钟->小时的进位规则,并抛出已过一秒时
325 ; 钟的消息
326 ; *编写: 王绍伟
327 ; *版本信息: V1.0 2003年8月15日
328 ; *****************************************************************************************
*/
329 ; extern void rtc_soft_routine(void)
330
---- 331 RSEG ?PR?rtc_soft_routine?RTC
0000 332 rtc_soft_routine:
333 USING 0
334 ; SOURCE LINE # 113
335 ; {
336 ; SOURCE LINE # 114
337 ; #ifdef SOFT_RTC
338 ; if(++g_RTCMember.second > 59)
339 ; SOURCE LINE # 116
0000 0500 F 340 INC g_RTCMember
0002 E500 F 341 MOV A,g_RTCMember
0004 D3 342 SETB C
0005 943B 343 SUBB A,#03BH
0007 4005 344 JC ?C0005
345 ; {
346 ; SOURCE LINE # 117
347 ; g_RTCMember.second = 0;
348 ; SOURCE LINE # 118
0009 E4 349 CLR A
000A F500 F 350 MOV g_RTCMember,A
351 ; g_RTCMember.minute++;
352 ; SOURCE LINE # 119
000C 0500 F 353 INC g_RTCMember+01H
354 ; }
355 ; SOURCE LINE # 120
000E 356 ?C0005:
357 ;
358 ; if(g_RTCMember.minute > 59)
359 ; SOURCE LINE # 122
000E E500 F 360 MOV A,g_RTCMember+01H
0010 D3 361 SETB C
0011 943B 362 SUBB A,#03BH
0013 4005 363 JC ?C0006
364 ; {
365 ; SOURCE LINE # 123
366 ; g_RTCMember.minute = 0;
367 ; SOURCE LINE # 124
0015 E4 368 CLR A
0016 F500 F 369 MOV g_RTCMember+01H,A
370 ; g_RTCMember.hour++;
371 ; SOURCE LINE # 125
A51 MACRO ASSEMBLER RTC 10/31/2003 02:22:24 PAGE 7
0018 0500 F 372 INC g_RTCMember+02H
373 ; }
374 ; SOURCE LINE # 126
001A 375 ?C0006:
376 ; msg_queue_in(MSG_RTC, RTC_SECOND);
377 ; SOURCE LINE # 127
001A E4 378 CLR A
001B FD 379 MOV R5,A
001C 7F03 380 MOV R7,#03H
001E 020000 F 381 LJMP _msg_queue_in
382 ; END OF rtc_soft_routine
383
384 ; #endif
385 ; }
386 ;
387 ;
388 ; /****************************************************************************************
**
389 ; *函数名: rtc_read
390 ; *参数: 无
391 ; *返回值: g_RTC 时钟结构体
392 ; *描述: 读取当前时钟结构体内容
393 ; *编写: 王绍伟
394 ; *版本信息: V1.0 2003年8月15日
395 ; *****************************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -