?? rtc.lst
字號:
C51 COMPILER V8.05a RTC 11/26/2007 12:48:21 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE RTC
OBJECT MODULE PLACED IN RTC.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE RTC.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2 #include"reg935.h"
3 #include"UserDef.h"
4
5 uint idata delayCount;
6 uchar data recCurrentTimeBuf[7]; //暫存當前時間緩沖器[0]=世紀[1]=年[2]=月[3]=日[4]=時[5]=分[6]=秒
7
8 extern uint data delayTime;
9 extern uchar data recPresetData[4];
10 extern void ReadEEPROMByte(uchar orgAddr, uchar dataSize, uchar *bufPtr);
11 extern void EEPROMWriteByte(uchar orgAddr, uchar dataSize, uchar *bufPtr);
12 void TimeGenerator(void);
13
14 void RTC_ISR(void) interrupt 10
15 {
16 1 static uint secCount = 0;
17 1
18 1 EA=0;
19 1
20 1 secCount++;
21 1
22 1 RTCCON &= 0x63; //清除RTC中斷標志位
23 1
24 1 TimeGenerator(); //時間產生
25 1
26 1 if(secCount==WRITE_EEPROM_INTERVAL) //到寫EEPROM 時間
27 1 {
28 2 ReadEEPROMByte(EEPROM_TIME_ADDR, 7, recCurrentTimeBuf);
29 2 secCount = 0;
30 2 }
31 1
32 1 EA=1;
33 1 }
34
35
36 //---------------------------------------------------------------------------
37 //函數名稱:void TimeGenerator(void)
38 //功能描述:產生時鐘
39 //輸入:無
40 //輸出:無
41 //---------------------------------------------------------------------------
42 void TimeGenerator(void)
43 {
44 1 recCurrentTimeBuf[SEC]++;
45 1 if(recCurrentTimeBuf[SEC]>59)
46 1 {
47 2 recCurrentTimeBuf[SEC] = 0;
48 2 recCurrentTimeBuf[MIN]++;
49 2 delayCount++;
50 2 if(recCurrentTimeBuf[MIN]>59)
51 2 {
52 3 recCurrentTimeBuf[MIN] = 0;
53 3 recCurrentTimeBuf[HOUR]++;
54 3 if(recCurrentTimeBuf[HOUR]>23)
55 3 {
C51 COMPILER V8.05a RTC 11/26/2007 12:48:21 PAGE 2
56 4 recCurrentTimeBuf[HOUR] = 0;
57 4 recCurrentTimeBuf[DATE]++;
58 4 switch(recCurrentTimeBuf[MON]) //查詢當前月份
59 4 {
60 5 case 2: //是2 月份
61 5 if(((recCurrentTimeBuf[YEAR]!=0)&&(recCurrentTimeBuf[YEAR]%4==0))||((recCurrentTimeBuf[YEAR]==0)&&(r
-ecCurrentTimeBuf[CENT]%4==0)))
62 5 {
63 6 //是閏年2 月29 天
64 6 if(recCurrentTimeBuf[DATE]>29)
65 6 recCurrentTimeBuf[DATE] = 1;
66 6 }
67 5 else
68 5 {
69 6 //是平年2 月28 天
70 6 if(recCurrentTimeBuf[DATE]>28)
71 6 recCurrentTimeBuf[DATE] = 1;
72 6 }
73 5
74 5 break;
75 5
76 5 case 1:
77 5 case 3:
78 5 case 5:
79 5 case 7:
80 5 case 8:
81 5 case 10:
82 5 case 12:
83 5 if(recCurrentTimeBuf[DATE]>31)
84 5 recCurrentTimeBuf[DATE] = 1;
85 5
86 5 break;
87 5
88 5 default:
89 5 if(recCurrentTimeBuf[DATE]>30)
90 5 recCurrentTimeBuf[DATE] = 1;
91 5
92 5 break;
93 5 }
94 4
95 4 recCurrentTimeBuf[MON]++;
96 4 if(recCurrentTimeBuf[MON]>12)
97 4 {
98 5 recCurrentTimeBuf[MON] = 1;
99 5 recCurrentTimeBuf[YEAR]++;
100 5 if(recCurrentTimeBuf[YEAR]>99)
101 5 {
102 6 recCurrentTimeBuf[YEAR] = 0;
103 6 recCurrentTimeBuf[CENT]++;
104 6 }
105 5 }
106 4
107 4 }
108 3 }
109 2 }
110 1 }
111
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 269 ----
CONSTANT SIZE = ---- ----
C51 COMPILER V8.05a RTC 11/26/2007 12:48:21 PAGE 3
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 9 ----
IDATA SIZE = 2 ----
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 + -