📄 rtc.src
字号:
; .\rtc.SRC generated from: ..\SourceFile\rtc.c
; COMPILER INVOKED BY:
; C:\Program Files\Keil\C51\BIN\C51.EXE ..\SourceFile\rtc.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\rtc.lst) SRC(.\rtc.SRC)
$NOMOD51
NAME RTC
P0 DATA 080H
P1 DATA 090H
P2 DATA 0A0H
P3 DATA 0B0H
T0 BIT 0B0H.4
AC BIT 0D0H.6
T1 BIT 0B0H.5
T2 BIT 090H.0
EA BIT 0A8H.7
IE DATA 0A8H
EXF2 BIT 0C8H.6
RD BIT 0B0H.7
ES BIT 0A8H.4
IP DATA 0B8H
RI BIT 098H.0
INT0 BIT 0B0H.2
CY BIT 0D0H.7
TI BIT 098H.1
INT1 BIT 0B0H.3
RCAP2H DATA 0CBH
PS BIT 0B8H.4
SP DATA 081H
T2EX BIT 090H.1
OV BIT 0D0H.2
RCAP2L DATA 0CAH
C_T2 BIT 0C8H.1
WR BIT 0B0H.6
RCLK BIT 0C8H.5
TCLK BIT 0C8H.4
SBUF DATA 099H
PCON DATA 087H
SCON DATA 098H
TMOD DATA 089H
TCON DATA 088H
IE0 BIT 088H.1
IE1 BIT 088H.3
AUXR DATA 08EH
B DATA 0F0H
CP_RL2 BIT 0C8H.0
ACC DATA 0E0H
ET0 BIT 0A8H.1
ET1 BIT 0A8H.3
TF0 BIT 088H.5
ET2 BIT 0A8H.5
TF1 BIT 088H.7
TF2 BIT 0C8H.7
RB8 BIT 098H.2
TH0 DATA 08CH
EX0 BIT 0A8H.0
IT0 BIT 088H.0
TH1 DATA 08DH
TB8 BIT 098H.3
EX1 BIT 0A8H.2
IT1 BIT 088H.2
TH2 DATA 0CDH
P BIT 0D0H.0
SM0 BIT 098H.7
TL0 DATA 08AH
SM1 BIT 098H.6
TL1 DATA 08BH
SM2 BIT 098H.5
TL2 DATA 0CCH
PT0 BIT 0B8H.1
PT1 BIT 0B8H.3
RS0 BIT 0D0H.3
PT2 BIT 0B8H.5
TR0 BIT 088H.4
RS1 BIT 0D0H.4
TR1 BIT 088H.6
TR2 BIT 0C8H.2
PX0 BIT 0B8H.0
PX1 BIT 0B8H.2
DPH DATA 083H
DPL DATA 082H
IPH DATA 0B7H
EXEN2 BIT 0C8H.3
REN BIT 098H.4
T2MOD DATA 0C9H
T2CON DATA 0C8H
SADEN DATA 0B9H
RXD BIT 0B0H.0
SADDR DATA 0A9H
CKCON DATA 08FH
TXD BIT 0B0H.1
AUXR1 DATA 0A2H
F0 BIT 0D0H.5
PSW DATA 0D0H
?PR?rtc_pcf8563_init?RTC SEGMENT CODE
?PR?_rtc_soft_init?RTC SEGMENT CODE
?PR?rtc_soft_routine?RTC SEGMENT CODE
?PR?rtc_soft_read?RTC SEGMENT CODE
?PR?_rtc_pcf8563_process?RTC SEGMENT CODE
?PR?_rtc_soft_process?RTC SEGMENT CODE
?CO?RTC SEGMENT CODE
?DT?RTC SEGMENT DATA
EXTRN CODE (_iic_rcv_str)
EXTRN XDATA (?_iic_rcv_str?BYTE)
EXTRN CODE (g_DAA)
EXTRN CODE (_iic_send_str)
EXTRN XDATA (?_iic_send_str?BYTE)
EXTRN CODE (_msg_queue_in)
EXTRN CODE (_delay)
PUBLIC g_RTCPool
PUBLIC g_RTCMember
PUBLIC _rtc_soft_process
PUBLIC _rtc_pcf8563_process
PUBLIC rtc_soft_read
PUBLIC rtc_soft_routine
PUBLIC _rtc_soft_init
PUBLIC rtc_pcf8563_init
RSEG ?DT?RTC
g_RTCMember: DS 3
g_RTCPool: DS 4
eRTCType: DS 1
RSEG ?CO?RTC
Pcf8563Init:
DB 000H
DB 000H
DB 030H
DB 029H
DB 000H
DB 000H
DB 000H
DB 000H
DB 000H
DB 080H
DB 080H
DB 080H
DB 080H
DB 083H
DB 000H
DB 000H
; /*************************************************/
;
; /****************实时时钟********************/
;
; /*************2003年4月16日*********************/
;
; /************WROTE BY WANGSW********************/
; #include "reg52x2.h"
; #include "define.h"
;
; #include "lcd.h"
; #include "iic.h"
; #include "rtc.h"
;
;
; static RTCType eRTCType;
;
; byte data g_RTCPool[4];
;
; RTCMember g_RTCMember;
;
;
; static byte code Pcf8563Init[16] = /*实时时钟初始化数据*/
; {
; 0x00, /*控制状态寄存器TEST|0 |STOP| 0 |TTESTC|0 |0 |0 */
; 0x00, /*控制状态寄存器 0 | 0 | 0 | TI/TP| AF | TF |AIE |TIE */
;
; 0x30, /*second D7=VL(voltage low)*/
; 0x29, /*minute*/
; 0x00, /*hour*/
; 0x00, /*day*/
; 0x00, /*week*/
; 0x00, /*month D7=centruy*/
; 0x00, /*year*/
;
; 0x80, /*minute alarm D7=alarm enable 低电平有效*/
; 0x80, /*hour alarm D7=alarm enable*/
; 0x80, /*day alarm D7=alarm enable*/
; 0x80, /*week alarm D7=alarm enable*/
;
; 0x83, /*D7=FE:clkout enable D1,D0:
; 00: 32.768KHz
; 01:1024
; 10:32
; 11:1
; */
; 0x00, /*D7=TE:timer enable D1,D0:
; 00:4096Hz
; 01:64
; 10:1
; 11:1/60
; */
; 0x00 /*timer back data倒计数值*/
; };
;
;
; #ifndef SOFT_RTC /*r如果定义了外围硬件实时时钟计数*/
; /******************************************************************************************
; *函数名: Int1RTC
; *参数: 无
; *返回值: 无
; *描述:
; *编写: 王绍伟
; *版本信息: V1.0 2003年8月15日
; ******************************************************************************************/
; static void Int1RTC(void) interrupt 2
; {
; EA = 0; /*r关闭所有中断*/
; msg_queue_in(MSG_RTC, NONE);
; EA = 1;
; }
; #endif
;
; extern void rtc_pcf8563_init(void)
RSEG ?PR?rtc_pcf8563_init?RTC
rtc_pcf8563_init:
USING 0
; SOURCE LINE # 74
; {
; SOURCE LINE # 75
?C0001:
; while(!iic_send_str(PCF8563, 0x00, Pcf8563Init, 16))
; SOURCE LINE # 76
MOV R3,#0FFH
MOV R2,#HIGH (Pcf8563Init)
MOV R1,#LOW (Pcf8563Init)
MOV DPTR,#?_iic_send_str?BYTE+05H
MOV A,#010H
MOVX @DPTR,A
CLR A
MOV R5,A
MOV R7,#0A2H
LCALL _iic_send_str
JC ?C0002
; {
; SOURCE LINE # 77
; delay(0x200);
; SOURCE LINE # 78
MOV R7,#00H
MOV R6,#02H
LCALL _delay
; }
; SOURCE LINE # 79
SJMP ?C0001
?C0002:
; iic_rcv_str(PCF8563, 0x02, g_RTCPool, 2);
; SOURCE LINE # 80
MOV R3,#00H
MOV R2,#HIGH (g_RTCPool)
MOV R1,#LOW (g_RTCPool)
MOV DPTR,#?_iic_rcv_str?BYTE+05H
MOV A,#02H
MOVX @DPTR,A
MOV R5,A
MOV R7,#0A2H
LJMP _iic_rcv_str
; END OF rtc_pcf8563_init
; }
;
; /******************************************************************************************
; *函数名: rtc_init
; *参数: hour
; minute
; second
; *返回值: 无
; *描述: 实时软件时钟计数器初始化
; *编写: 王绍伟
; *版本信息: V1.0 2003年8月15日
; ******************************************************************************************/
; extern void rtc_soft_init(byte hour, byte minute, byte second)
RSEG ?PR?_rtc_soft_init?RTC
_rtc_soft_init:
USING 0
; SOURCE LINE # 93
;---- Variable 'hour?140' assigned to Register 'R7' ----
;---- Variable 'second?142' assigned to Register 'R3' ----
;---- Variable 'minute?141' assigned to Register 'R5' ----
; {
; SOURCE LINE # 94
; g_RTCMember.hour = hour;
; SOURCE LINE # 95
MOV g_RTCMember+02H,R7
; g_RTCMember.minute = minute;
; SOURCE LINE # 96
MOV R7,AR5
MOV g_RTCMember+01H,R7
; g_RTCMember.second = second;
; SOURCE LINE # 97
MOV R7,AR3
MOV g_RTCMember,R7
; g_RTCPool[0] = g_DAA[g_RTCMember.second];
; SOURCE LINE # 98
MOV A,R7
MOV DPTR,#g_DAA
MOVC A,@A+DPTR
MOV g_RTCPool,A
; g_RTCPool[1] = g_DAA[g_RTCMember.minute];
; SOURCE LINE # 99
MOV A,g_RTCMember+01H
MOVC A,@A+DPTR
MOV g_RTCPool+01H,A
; g_RTCPool[2] = g_DAA[g_RTCMember.hour];
; SOURCE LINE # 100
MOV A,g_RTCMember+02H
MOVC A,@A+DPTR
MOV g_RTCPool+02H,A
; }
; SOURCE LINE # 101
RET
; END OF _rtc_soft_init
;
;
; /******************************************************************************************
; *函数名: rtc_process
; *参数: 无
; *返回值: 无
; *描述: 定义时钟从秒->分钟->小时的进位规则,并抛出已过一秒时
; 钟的消息
; *编写: 王绍伟
; *版本信息: V1.0 2003年8月15日
; ******************************************************************************************/
; extern void rtc_soft_routine(void)
RSEG ?PR?rtc_soft_routine?RTC
rtc_soft_routine:
USING 0
; SOURCE LINE # 113
; {
; SOURCE LINE # 114
; #ifdef SOFT_RTC
; if(++g_RTCMember.second > 59)
; SOURCE LINE # 116
INC g_RTCMember
MOV A,g_RTCMember
SETB C
SUBB A,#03BH
JC ?C0005
; {
; SOURCE LINE # 117
; g_RTCMember.second = 0;
; SOURCE LINE # 118
CLR A
MOV g_RTCMember,A
; g_RTCMember.minute++;
; SOURCE LINE # 119
INC g_RTCMember+01H
; }
; SOURCE LINE # 120
?C0005:
;
; if(g_RTCMember.minute > 59)
; SOURCE LINE # 122
MOV A,g_RTCMember+01H
SETB C
SUBB A,#03BH
JC ?C0006
; {
; SOURCE LINE # 123
; g_RTCMember.minute = 0;
; SOURCE LINE # 124
CLR A
MOV g_RTCMember+01H,A
; g_RTCMember.hour++;
; SOURCE LINE # 125
INC g_RTCMember+02H
; }
; SOURCE LINE # 126
?C0006:
; msg_queue_in(MSG_RTC, RTC_SECOND);
; SOURCE LINE # 127
CLR A
MOV R5,A
MOV R7,#03H
LJMP _msg_queue_in
; END OF rtc_soft_routine
; #endif
; }
;
;
; /******************************************************************************************
; *函数名: rtc_read
; *参数: 无
; *返回值: g_RTC 时钟结构体
; *描述: 读取当前时钟结构体内容
; *编写: 王绍伟
; *版本信息: V1.0 2003年8月15日
; ******************************************************************************************/
; extern RTCMember rtc_soft_read(void)
RSEG ?PR?rtc_soft_read?RTC
rtc_soft_read:
USING 0
; SOURCE LINE # 140
; {
; SOURCE LINE # 141
; return(g_RTCMember);
; SOURCE LINE # 142
MOV R3,#00H
MOV R2,#HIGH (g_RTCMember)
MOV R1,#LOW (g_RTCMember)
; }
; SOURCE LINE # 143
?C0008:
RET
; END OF rtc_soft_read
;
;
; extern void rtc_pcf8563_process(RTCType eRTCType)
RSEG ?PR?_rtc_pcf8563_process?RTC
_rtc_pcf8563_process:
USING 0
; SOURCE LINE # 146
; {
; SOURCE LINE # 147
; eRTCType = eRTCType;
; SOURCE LINE # 148
; iic_rcv_str(PCF8563, 0x02, g_RTCPool, 2);
; SOURCE LINE # 149
MOV R3,#00H
MOV R2,#HIGH (g_RTCPool)
MOV R1,#LOW (g_RTCPool)
MOV DPTR,#?_iic_rcv_str?BYTE+05H
MOV A,#02H
MOVX @DPTR,A
MOV R5,A
MOV R7,#0A2H
LJMP _iic_rcv_str
; END OF _rtc_pcf8563_process
; }
;
; extern void rtc_soft_process(RTCType eRTCType)
RSEG ?PR?_rtc_soft_process?RTC
_rtc_soft_process:
; SOURCE LINE # 152
; {
; SOURCE LINE # 153
; eRTCType = eRTCType; /*以备今后用*/
; SOURCE LINE # 154
; g_RTCPool[0] = g_DAA[g_RTCMember.second];
; SOURCE LINE # 155
MOV A,g_RTCMember
MOV DPTR,#g_DAA
MOVC A,@A+DPTR
MOV g_RTCPool,A
; g_RTCPool[1] = g_DAA[g_RTCMember.minute];
; SOURCE LINE # 156
MOV A,g_RTCMember+01H
MOVC A,@A+DPTR
MOV g_RTCPool+01H,A
; g_RTCPool[2] = g_DAA[g_RTCMember.hour];
; SOURCE LINE # 157
MOV A,g_RTCMember+02H
MOVC A,@A+DPTR
MOV g_RTCPool+02H,A
; }
; SOURCE LINE # 158
RET
; END OF _rtc_soft_process
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -