📄 51.lst
字号:
167 4 EEP=EEP+2 ; /*加一页*/
168 4 }
169 3
170 3 ISendByte(EEP,point,sen);
171 3 if(0xFF==point-1)
172 3 {
173 4 point=0x00; /*页内指针复位*/
174 4 EEP=EEP+2 ; /*加一页*/
175 4 }
176 3 ISendByte(EEP,point,min);
177 3 if(0xFF==point-1)
178 3 {
179 4 point=0x00; /*页内指针复位*/
C51 COMPILER V7.04 51 10/09/2008 16:47:44 PAGE 4
180 4 EEP=EEP+2 ; /*加一页*/
181 4 }
182 3 ISendByte(EEP,point,hour);
183 3 if(0xFF==point-1)
184 3 {
185 4 point=0x00; /*页内指针复位*/
186 4 EEP=EEP+2 ; /*加一页*/
187 4 }
188 3 while(!s5); /*等待按键松开 开始写入回复故障的时间*/
189 3 wflag=0; //故障清除
190 3 id=1;
191 3 ISendByte(EEP,point,id);
192 3 point++;
193 3 if(0xFF==point-1)
194 3 {
195 4 point=0x00; /*页内指针复位*/
196 4 EEP=EEP+2 ; /*加一页*/
197 4 }
198 3
199 3 ISendByte(EEP,point,sen);
200 3 if(0xFF==point-1)
201 3 {
202 4 point=0x00; /*页内指针复位*/
203 4 EEP=EEP+2 ; /*加一页*/
204 4 }
205 3 ISendByte(EEP,point,min);
206 3 if(0xFF==point-1)
207 3 {
208 4 point=0x00; /*页内指针复位*/
209 4 EEP=EEP+2 ; /*加一页*/
210 4 }
211 3 ISendByte(EEP,point,hour);
212 3 if(0xFF==point-1)
213 3 {
214 4 point=0x00; /*页内指针复位*/
215 4 EEP=EEP+2 ; /*加一页*/
216 4 }
217 3
218 3 }
219 2 }
220 1 }
221
222 void serial()
223 {
224 1 if(recvflag==1)
225 1 {
226 2 ES=0; //关串行中断
227 2 recvflag=0;
228 2 if(wflag==1)
229 2 {
230 3 SBUF=id;
231 3 while(!TI); //确定发送完毕
232 3 TI=0;
233 3 }
234 2 else if(wflag==0)
235 2 {
236 3 SBUF='o';
237 3 while(!TI); //确定发送完毕
238 3 TI=0;
239 3 SBUF='k';
240 3 while(!TI); //确定发送完毕
241 3 TI=0;
C51 COMPILER V7.04 51 10/09/2008 16:47:44 PAGE 5
242 3 }
243 2
244 2
245 2 ES=1;
246 2 }
247 1 }
248
249 void main()
250 {
251 1
252 1
253 1 ISendByte(PCF8583,PCF8583_Ctr,0x00); /*reset*/
254 1 /*************************************************************************
255 1 NOTE: 向分0x03,向秒0x02写入0 ,向hour0x04写入0x00;
256 1 *************************************************************************/
257 1
258 1 ISendByte(PCF8583,Sen,0x00);
259 1 ISendByte(PCF8583,Min,0x00);
260 1 ISendByte(PCF8583,Hour,0x00); /*写入00 00000000 bit7,bit6=0->24小时制*/
261 1
262 1 /*设置定时器0,50ms中断,用于LED的动态显示*/
263 1 TMOD=0x01;
264 1 TH0=(65536-5000)/256;
265 1 TL0=(65536-5000)%256;
266 1 EA=1;
267 1 ET0=1;
268 1 TR0=1;
269 1
270 1 /*串口中断设置*/
271 1
272 1 TMOD=0x20;//设置定时器1为工作方式2
273 1 TH1=0xfd;
274 1 TL1=0xfd; //9600bps
275 1 TR1=1;
276 1 REN=1;
277 1 SM0=0;
278 1 SM1=1;
279 1 EA=1;
280 1 ES=1; //开串口中断
281 1
282 1
283 1 while(1)
284 1 {
285 2
286 2 keyscan();
287 2 save();
288 2 serial();
289 2 if(0==flag)
290 2 {
291 3 sen=IRcvByte(PCF8583,Sen);
292 3 min=IRcvByte(PCF8583,Min);
293 3 hour=IRcvByte(PCF8583,Hour);
294 3 }
295 2
296 2
297 2
298 2
299 2
300 2 }
301 1
302 1 }
303
C51 COMPILER V7.04 51 10/09/2008 16:47:44 PAGE 6
304 void timer0() interrupt 1
305 {
306 1 TH0=(65536-5000)/256;
307 1 TL0=(65536-5000)%256;
308 1 display(1,2,hour);
309 1 display_(3);
310 1 display(4,5,min);
311 1 display_(6);
312 1 display(7,8,sen);
313 1 }
314
315 void ser() interrupt 4
316
317 {
318 1 uchar a;
319 1 RI=0; //RI清零
320 1
321 1 a=SBUF;
322 1 if(a==0xaa) recvflag=1;
323 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1175 ----
CONSTANT SIZE = 22 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 9 15
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -