📄 shi zhong.lst
字号:
C51 COMPILER V7.50 SHI_ZHONG 10/13/2005 17:37:31 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE SHI_ZHONG
OBJECT MODULE PLACED IN SHI ZHONG.OBJ
COMPILER INVOKED BY: D:\KEIL\C51\BIN\C51.EXE SHI ZHONG.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include<absacc.h>
3 #include<intrins.h>
4
5 #define uchar unsigned char
6 #define uint unsigned int
7
8 sbit P1_4=P1^4;
9 sbit P1_3=P1^3;
10 sbit P1_2=P1^2;
11
12 sbit RD12887=P3^7;
13 sbit WR12887=P3^6;
14
15 #define CMD_START_DS12C887 0x20
16 #define CMD_START_OSCILLATOR 0x70
17 #define CMD_CLOSE_DS12C887 0x30
18
19 #define MASK_SETB_SET 0x80
20 #define MASK_CLR_SET 0x7f
21 #define MASK_SETB_DM 0x04
22 #define MASK_CLR_DM 0xfb
23 #define MASK_SETB_2412 0x02
24 #define MASK_CLR_2412 0xfb
25 #define MASK_SETB_DSE 0x01
26 #define MASK_CLR_DSE 0xfe
27
28 void Delay(uchar no);
29 uchar Ysar,Mon,Date,Hours,Min,See;
30 uchar ucYear; uchar ucMon; uchar ucDate;
31 uchar ucHours; uchar ucMin; uchar ucSec;
32
33 xdata uchar ucSecondsChannel _at_ 0x7F00;
34 xdata uchar ucMinutesChannel _at_ 0x7F02;
35 xdata uchar ucHoursChannel _at_ 0x7F04;
36 xdata uchar ucDofWChannel _at_ 0x7F06;
37 xdata uchar ucDateChannel _at_ 0x7F07;
38 xdata uchar ucMonthChannel _at_ 0x7F08;
39 xdata uchar ucYearChannel _at_ 0x7F09;
40 xdata uchar ucCenturyChannel _at_ 0x7F32;
41 xdata uchar ucRegA _at_ 0x7F0a;
42 xdata uchar ucRegB _at_ 0x7F0b;
43 xdata uchar ucRegC _at_ 0x7F0c;
44 xdata uchar ucRegD _at_ 0x7F0d;
45
46
47 void StartDs12c887(void);
48 void CloseDs12c887(void);
49 void InitDs12c887(void);
50 uchar GetSeconds(void);
51 uchar GetMinutes(void);
52 uchar GetHours(void);
53 uchar GetDate(void);
54 uchar GetMonth(void);
55 uchar GetYear(void);
C51 COMPILER V7.50 SHI_ZHONG 10/13/2005 17:37:31 PAGE 2
56 uchar GetCentury(void);
57 void SetTime(uchar chSeconds,uchar chMinutes,uchar chHours);
58 void SetDate(uchar chDate,uchar chMonth,uchar chYear);
59
60 void Display(uchar *ucPt);
61 uchar code tab[]={0x88,0xEB,0x4C,0x49,0x2B,0x19,0x18,0xCB,0x08,
62 0x09,0x0A,0x38,0x9C,0x68,0x1C,0x1E,0xFF};
63
64
65 /********************************************************************/
66
67 void StartDs12c887(void)
68 {
69 1 ucRegA=CMD_START_DS12C887;
70 1 }
71
72 void InitDs12c887()
73 {
74 1 volatile uchar i;
75 1 StartDs12c887();
76 1 ucRegB=ucRegB|MASK_SETB_SET;
77 1 ucRegB=ucRegB&MASK_CLR_DM|MASK_SETB_2412&MASK_CLR_DSE;
78 1 ucCenturyChannel=0x21;
79 1
80 1 i=ucRegC;
81 1 i=ucRegD;
82 1
83 1 ucRegB=ucRegB&MASK_CLR_SET;
84 1 }
85
86 /******************************************************************/
87
88 uchar GetSeconds(void)
89 {
90 1 uchar uip;
91 1 do{ uip=ucRegA;} while ((uip&0x80)==0x80);
92 1 return(ucSecondsChannel);
93 1 }
94
95 /****************************************************************/
96
97 uchar GetMinutes(void)
98 {
99 1 uchar uip;
100 1 do{ uip=ucRegA;} while (( uip&0x80)==0x80);
101 1 return(ucMinutesChannel);
102 1 }
103
104 /****************************************************************/
105
106 uchar GetHours(void)
107 {
108 1 uchar uip;
109 1 do{ uip=ucRegA;} while (( uip&0x80)==0x80);
110 1 return(ucHoursChannel);
111 1 }
112
113 /****************************************************************/
114
115 uchar GetDate(void)
116 {
117 1 uchar uip;
C51 COMPILER V7.50 SHI_ZHONG 10/13/2005 17:37:31 PAGE 3
118 1 do{ uip=ucRegA;} while (( uip&0x80)==0x80);
119 1 return(ucDateChannel);
120 1 }
121
122 /****************************************************************/
123
124 uchar GetMonth(void)
125 {
126 1 uchar uip;
127 1 do{ uip=ucRegA;} while (( uip&0x80)==0x80);
128 1 return(ucMonthChannel);
129 1 }
130
131 /****************************************************************/
132
133 uchar GetYear(void)
134 {
135 1 uchar uip;
136 1 do{ uip=ucRegA;} while (( uip&0x80)==0x80);
137 1 return(ucYearChannel);
138 1 }
139
140 /****************************************************************/
141
142 void SetTime(uchar chSeconds,uchar chMinutes,uchar chHours)
143 {
144 1 ucRegB=ucRegB|MASK_SETB_SET;
145 1 ucSecondsChannel=chSeconds;
146 1 ucMinutesChannel=chMinutes;
147 1 ucHoursChannel=chHours;
148 1 ucRegB=ucRegB&MASK_CLR_SET;
149 1 }
150
151 /*************************************************************/
152
153 void SetDate(unsigned char chDate,unsigned char chMonth,unsigned char chYear)
154 {
155 1 ucRegB=ucRegB|MASK_SETB_SET;
156 1 ucDateChannel=chDate;
157 1 ucMonthChannel=chMonth;
158 1 ucYearChannel=chYear;
159 1 ucRegB=ucRegB&MASK_CLR_SET;
160 1 }
161
162 /***************************************************************/
163
164 void main(void)
165 {
166 1 uchar i,ucTimeArray[6];
167 1 SCON=0x00;
168 1 Delay(25);
169 1
170 1 P1_4=0;
171 1 P1_3=1;
172 1 P1_2=0;
173 1
174 1 ucTimeArray[0]=0x05;
175 1 ucTimeArray[1]=0x08;
176 1 ucTimeArray[2]=0x21;
177 1 ucTimeArray[3]=0x12;
178 1 ucTimeArray[4]=0x07;
179 1 ucTimeArray[5]=0x00;
C51 COMPILER V7.50 SHI_ZHONG 10/13/2005 17:37:31 PAGE 4
180 1
181 1 SetTime(ucTimeArray[5],ucTimeArray[4],ucTimeArray[3]);
182 1 SetDate(ucTimeArray[2],ucTimeArray[1],ucTimeArray[0]);
183 1
184 1 for(i=0;i<6;i++)
185 1 ucTimeArray[i]=0;
186 1
187 1 while(1)
188 1 {
189 2 ucTimeArray[0]=GetYear();
190 2 ucTimeArray[1]=GetMonth();
191 2 ucTimeArray[2]=GetDate();
192 2 ucTimeArray[3]=GetHours();
193 2 ucTimeArray[4]=GetMinutes();
194 2 ucTimeArray[5]=GetSeconds();
195 2
196 2 Display(ucTimeArray+3);
197 2 Delay(1);
198 2 }
199 1 }
200
201 void Display(uchar *ucPt)
202 {
203 1 uchar ucTemp[6];
204 1 ucTemp[0]=(*ucPt)>>4;
205 1 ucTemp[1]=(*ucPt)&0x0f;
206 1 ucPt++;
207 1 ucTemp[2]=(*ucPt)>>4;
208 1 ucTemp[3]=(*ucPt)&0x0f;
209 1 ucPt++;
210 1 ucTemp[4]=(*ucPt)>>4;
211 1 ucTemp[5]=(*ucPt)&0x0f;
212 1
213 1 SBUF=tab[ucTemp[5]];
214 1 while(!TI);
215 1 TI=0;
216 1 SBUF=tab[ucTemp[4]];
217 1 while(!TI);
218 1 TI=0;
219 1 SBUF=tab[ucTemp[3]];
220 1 while(!TI);
221 1 TI=0;
222 1 SBUF=tab[ucTemp[2]];
223 1 while(!TI);
224 1 TI=0;
225 1 SBUF=tab[ucTemp[1]];
226 1 while(!TI);
227 1 TI=0;
228 1 SBUF=tab[ucTemp[0]];
229 1 while(!TI);
230 1 TI=0;
231 1 }
232
233 void Delay(unsigned char no)
234 {
235 1 unsigned char i,j;
236 1 for(;no>0;no--)
237 1 {
238 2 for(i=0;i<100;i++)
239 2 for(j=0;j<100;j++);
240 2 }
241 1 }
C51 COMPILER V7.50 SHI_ZHONG 10/13/2005 17:37:31 PAGE 5
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 450 ----
CONSTANT SIZE = 17 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 12 13
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 + -