📄 kw_rtc.lst
字号:
143 1 {
144 2 SCLK_C;
145 2 Delay_1us(1);
146 2 if(ADD&0X01)
147 2 IO1302_S;
148 2 else
149 2 IO1302_C;
150 2 ADD >>=1;
151 2 Delay(10);
152 2 SCLK_S;
153 2 Delay_1us(1);
154 2 }
155 1 OEE = 0xf7;
156 1 Delay_1us(1);
157 1
158 1 for(i=0;i<8;i++) //循环读取1位,共8位数据
159 1 {
160 2 SCLK_C;
161 2 Delay_1us(1);
162 2 temp >>=1;
163 2 if(IO1302_D)
164 2 {
165 3 temp|=0x80;
166 3 }
167 2 Delay(10);
168 2 SCLK_S;
169 2 Delay_1us(1);
170 2 }
171 1 RST1302_C;
172 1 Delay_1us(4);
173 1 SCLK_C;
174 1 OEE = 0xff;
175 1 return(temp);
176 1 }
177
178 /*************************************************************************************
C51 COMPILER V7.50 KW_RTC 10/12/2007 17:05:49 PAGE 4
179 Function: RM_InitDS1302
180 Description: DS1302初始化函数
181 Called By:
182 Input: N/A
183 Output: N/A
184 Return: void
185 Others:
186 *************************************************************************************/
187 void RM_InitDS1302()
188 {
189 1 BYTE Temp;
190 1
191 1 RM_WriteDS1302(0x8E, 0x00); // 关闭写保护
192 1 RM_WriteDS1302(0x90, 0xAB); // 设置充电电阻
193 1 Temp=RM_ReadDS1302(0x81); // 设置CH位
194 1 Temp&=0x7F;
195 1 RM_WriteDS1302(0x80, Temp);
196 1 RM_WriteDS1302(0x8E, 0x80); // 打开写保护
197 1 }
198
199 /*************************************************************************************
200 Function: RM_SetRTCTime
201 Description: 设置RTC时间,时间值保存于配置参数CM_ConfigParameter。
202 Called By:
203 Input: N/A
204 Output: N/A
205 Return: void
206 Others: 调用该模块时,须先对CM_ConfigParameter进行初始化
207 *************************************************************************************/
208 void RM_SetRTCTime(void)
209 {
210 1 RM_WriteDS1302(0x8E,0x00);
211 1 RM_WriteDS1302(0x8C,CM_ConfigParameter.RTC_Time[0]); //year
212 1 RM_WriteDS1302(0x88,CM_ConfigParameter.RTC_Time[1]); //month
213 1 RM_WriteDS1302(0x86,CM_ConfigParameter.RTC_Time[2]); //date
214 1 RM_WriteDS1302(0x84,CM_ConfigParameter.RTC_Time[3]); //hour
215 1 RM_WriteDS1302(0x82,CM_ConfigParameter.RTC_Time[4]); //min.
216 1 RM_WriteDS1302(0x80,CM_ConfigParameter.RTC_Time[5]); //sec.
217 1 RM_WriteDS1302(0X8E,0X80);
218 1 }
219
220 /*************************************************************************************
221 Function: RM_ReadRTCTime
222 Description: 读取RTC时间,时间值保存于RM_Curtime。
223 Called By:
224 Input: N/A
225 Output: N/A
226 Return: void
227 Others:
228 *************************************************************************************/
229 void RM_ReadRTCTime(void)
230 {
231 1 RM_Curtime[0]=RM_ReadDS1302(0x8D); //year
232 1 RM_Curtime[1]=RM_ReadDS1302(0x89); //month
233 1 RM_Curtime[2]=RM_ReadDS1302(0x87); //date
234 1 RM_Curtime[3]=RM_ReadDS1302(0x85); //hour
235 1 RM_Curtime[4]=RM_ReadDS1302(0x83); //min.
236 1 RM_Curtime[5]=RM_ReadDS1302(0x81); //sec.
237 1 }
238
239 /*************************************************************************************
240 Function: RM_GetDateForFAT
C51 COMPILER V7.50 KW_RTC 10/12/2007 17:05:49 PAGE 5
241 Description: 蒋保存于RM_Curtime 中的日期转换成用FAT的整型值,
242 Called By:
243 Input: N/A
244 Output: N/A
245 Return: WORD 转换结果
246 Others: 计算方法 FAT_Date = (Year-1980)*512 + Month*32 + Date
247 *************************************************************************************/
248 WORD RM_GetDateForFAT()
249 {
250 1 BYTE xdata day,year,month;
251 1 year = BCD2Byte(RM_Curtime[0]) + 2000;
252 1 month = BCD2Byte(RM_Curtime[1]);
253 1 day = BCD2Byte(RM_Curtime[2]);
254 1 return ((year-1980)*512+month*32+day);
255 1 }
256
257 /*************************************************************************************
258 Function: RM_GetTimeForFAT
259 Description: 蒋保存于RM_Curtime 中的时间转换成用FAT的整型值,
260 Called By:
261 Input: N/A
262 Output: N/A
263 Return: WORD 转换结果
264 Others: 计算方法 FAT_Time = Hour*2048 + Min.*32 + Sec. + 2
265 *************************************************************************************/
266 WORD RM_GetTimeForFAT()
267 {
268 1 BYTE xdata hour,min,sec;
269 1 hour = BCD2Byte(RM_Curtime[3]);
270 1 min = BCD2Byte(RM_Curtime[4]);
271 1 sec = BCD2Byte(RM_Curtime[5]);
272 1 return (hour*2048 + min*32 + sec + 2);
273 1 }
274
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 680 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 8 6
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
EDATA SIZE = ---- ----
HDATA SIZE = ---- ----
XDATA CONST SIZE = ---- ----
FAR CONST SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -