📄 rtc.lst
字号:
C51 COMPILER V7.20 RTC 01/31/2007 10:21:45 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE RTC
OBJECT MODULE PLACED IN RTC.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\c51.exe RTC.c DB OE
line level source
1 #include "LZK.H"
2
3
4 /****************************************************************************
5 ** 函数名称: BCDConvert()
6 ** 功能描述: BCD转十进制程序
7 ** 入口参数: ucBCD为待转换的BCD码
8 ** 出口参数: 转化后的十进制数.
9 ** 全局变量: 无.
10 ** 调用模块: 无.
11 ** 说明:
12 ****************************************************************************/
13 uint8 BCDConvert(uint8 ucBCD)//ucBCD为待转换的BCD码;
14 {
15 1 unsigned char TempH, TempL;
16 1
17 1 TempH = (ucBCD&0xF0)>>4; //TempH保存十进制数的高位
18 1
19 1 TempL = ucBCD&0x0f; //TempL保存十进制数的低位
20 1
21 1 return TempH*10+TempL; //返回相应的十进制数
22 1 }
23 /****************************************************************************
24 ** 函数名称: DecimalToBCD()
25 ** 功能描述: 十进制转BCD程序
26 ** 入口参数: ucDecimal为待转换的十进制码
27 ** 出口参数: 转化后的BCD.
28 ** 全局变量: 无.
29 ** 调用模块: 无.
30 ** 说明:
31 ****************************************************************************/
32 uint8 DecimalToBCD(uint8 ucDecimal)
33 {
34 1 uint8 a,b,c;
35 1
36 1 a=ucDecimal/10;
37 1
38 1 b=ucDecimal%10;
39 1
40 1 c=a*16+b;
41 1
42 1 return (c);
43 1 }
44 /**************************************************************************
45 ** 函数名称: RTC8563_Read()
46 ** 功能描述: 读取时间
47 ** 入口参数: 无
48 ** 出口参数: 无.
49 ** 全局变量: 无.
50 ** 调用模块: 无.
51 ** 说明:
52 ****************************************************************************/
53 void RTC8563_Read(void)
54 {
55 1 SFRPAGE = 0x00;
C51 COMPILER V7.20 RTC 01/31/2007 10:21:45 PAGE 2
56 1 STA = 1;
57 1 while(SMB0STA != 0x08);
58 1 SMB0DAT = 0xa2;
59 1 STA = 0;
60 1 SI = 0;
61 1 while(SMB0STA != 0x18);
62 1 SMB0DAT = 0x02;
63 1 SI = 0;
64 1 while(SMB0STA != 0x28); //重启
65 1 STA = 1;
66 1 SI = 0;
67 1 while(SMB0STA!=0x10);
68 1 SMB0DAT=0xa3;
69 1 STA = 0;
70 1 SI = 0;
71 1 while(SMB0STA != 0x40);
72 1 AA = 1;
73 1 SI = 0;
74 1 //////////////////////////////
75 1 while(SMB0STA != 0x50);//秒
76 1 RTCData[0] = SMB0DAT;
77 1 SI = 0;
78 1 SI = 0;//特殊之处
79 1
80 1 while(SMB0STA != 0x50);//分
81 1 RTCData[1] = SMB0DAT;
82 1 SI = 0;
83 1 SI = 0;//特殊之处
84 1
85 1 while(SMB0STA != 0x50);//时
86 1 RTCData[2] = SMB0DAT;
87 1 SI = 0;
88 1 SI = 0;//特殊之处
89 1
90 1 while(SMB0STA != 0x50);//日
91 1 RTCData[3] = SMB0DAT;
92 1 SI = 0;
93 1 SI = 0;//特殊之处
94 1
95 1 while(SMB0STA != 0x50);//星期
96 1 RTCData[4] = SMB0DAT;
97 1 SI = 0;
98 1 SI = 0;//特殊之处
99 1
100 1 while(SMB0STA != 0x50);//月
101 1 RTCData[5] = SMB0DAT;
102 1 AA = 0;
103 1 SI = 0;
104 1
105 1 while(SMB0STA != 0x58);//年
106 1 RTCData[6] = SMB0DAT;
107 1 STO = 1;
108 1 SI = 0;
109 1
110 1 RTCData[0] = BCDConvert(RTCData[0] & 0x7f); //秒
111 1 RTCData[1] = BCDConvert(RTCData[1] & 0x7f); //分
112 1 RTCData[2] = BCDConvert(RTCData[2] & 0x3f); //小时
113 1 RTCData[3] = BCDConvert(RTCData[3] & 0x3f); //日
114 1 RTCData[4] = BCDConvert(RTCData[4] & 0x07); //星期
115 1 RTCData[5] = BCDConvert(RTCData[5] & 0x1f); //月/世纪
116 1 RTCData[6] = BCDConvert(RTCData[6]); //年
117 1 }
C51 COMPILER V7.20 RTC 01/31/2007 10:21:45 PAGE 3
118
119 /****************************************************************************
120 ** 函数名称: RTC8563_Write()
121 ** 功能描述: 读取时间
122 ** 入口参数: 无
123 ** 出口参数: 无.
124 ** 全局变量: 无.
125 ** 调用模块: 无.
126 ** 说明:
127 ****************************************************************************/
128 void RTC8563_Write()
129 {
130 1 uint8 i;
131 1 for(i=0; i<7; i++) //RTCWriteData[0~6]: 秒、分、时、日、月、星期、月、年
132 1 {
133 2 RTCData[i]=DecimalToBCD(RTCData[i]);
134 2
135 2 SFRPAGE = 0x00;
136 2 STA = 1;
137 2 STA = 1;
138 2 STA = 1;
139 2 while(SMB0STA != 0x08);
140 2
141 2 SMB0DAT = 0xa2;
142 2 STA = 0;
143 2 SI = 0;
144 2 while(SMB0STA != 0x18);
145 2
146 2 SMB0DAT = i + 2;
147 2 SI = 0;
148 2 while(SMB0STA != 0x28);
149 2
150 2 SMB0DAT = RTCData[i];
151 2 SI = 0;
152 2 SI = 0;//特殊之处
153 2 while(SMB0STA != 0x28);
154 2
155 2 STO = 1;
156 2 SI = 0;
157 2 }
158 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 362 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -