📄 mainproc.lst
字号:
202 1 {
203 2 LightOnOff = TRUE;
204 2 Light_DT = (uint16)((Light_DelayTime*100));
205 2 Light_DT = Light_DT/TIME_VMS;
206 2 }
207 1
208 1 //读取按键音开或关值
209 1 //BeepOnOff=TRUE 开,FALSE--关
210 1 if(RD_ByteFromDS1302_RAM(Beep_RAMAddr|0x01)==0x00)
211 1 BeepOnOff=FALSE;
212 1 else
213 1 BeepOnOff=TRUE;
214 1
215 1 //闹铃初始化
216 1 tempvar=EepromRead(TimerFlag);
217 1 tempvar1=EepromRead(TimerFlag+1);
218 1 if(tempvar!=0x55 || tempvar1!=0xAA)
219 1 {
220 2
221 2 EepromWrite(TimerFlag,0x55);
222 2 Delay(1);
223 2 EepromWrite(TimerFlag+1,0xAA);
224 2 Delay(1);
225 2 //清X5045
226 2 for(tempvar1=0x12;tempvar1<160;tempvar1++)
227 2 {
228 3 EepromWrite(tempvar1,0x00);
229 3 Delay(1);
230 3 }
231 2 }
232 1 else
233 1 {//读已设置的铃点数值
234 2 tempvar=EepromRead(Timers);
235 2 for(tempvar1=0;tempvar1<tempvar;tempvar1++)
236 2 {
237 3 TimerArray[tempvar1].BitEnable=EepromRead(TimerValue+tempvar1*3);
238 3 TimerArray[tempvar1].Hour=EepromRead(TimerValue+tempvar1*3+1);
239 3 TimerArray[tempvar1].Minute=EepromRead(TimerValue+tempvar1*3+2);
240 3 }
241 2 }
C51 COMPILER V7.50 MAINPROC 12/10/2008 15:08:38 PAGE 5
242 1
243 1 Initial_DS1302();
244 1 InitLcd();
245 1
246 1 Set_Timer0_60ms();
247 1 }
248
249
250 //==========================================
251 //定时器0中断
252 #pragma disable
253 void Timer0ISR(void) interrupt 1
254 {
255 1 Set_Timer0_60ms();
256 1
257 1 if(LightOnOff==TRUE)
258 1 {
259 2 Count_BG++;
260 2 if (Count_BG>=Light_DT)
261 2 {
262 3 Light_Off();
263 3 }
264 2 }
265 1
266 1 if (HaveKey_Flag)
267 1 {
268 2 Light_Destory++;
269 2 if (Light_Destory>=RetDelay)
270 2 {
271 3 Light_Destory=0;
272 3 ret_Flag=TRUE;
273 3 }
274 2 }
275 1
276 1 KeyCount++;
277 1 if(KeyCount>25)
278 1 {
279 2 KeyCount=0;
280 2 KeyBool=TRUE;
281 2 }
282 1 Cursor_Count++;
283 1
284 1 }
285
286
287 void main()
288 {
289 1 idata uint8 Sys_D_T0[7];
290 1 idata uint8 KeyValue,MainMenuIndex=0;
291 1 bit SucFlag=0;
292 1 PowerOnInitial();
293 1 VariableInitial();
294 1 SystemInitial();
295 1 ClearRAM(0,7);
296 1 LOGO();
297 1 Beep(2);
298 1 ClearRAM(0,8);
299 1
300 1 #ifdef MYDEBUG
KeyValue=0x77;
Msingle_font_pattern (English_Offset[(KeyValue>>4)&0x0F],2,64,0);
Msingle_font_pattern (English_Offset[(KeyValue&0x0F)],2,72,0);
C51 COMPILER V7.50 MAINPROC 12/10/2008 15:08:38 PAGE 6
KeyValue=0x00;
EepromWrite(0x20,0x55);
Beep(1);
KeyValue=EepromRead(0x20);
Msingle_font_pattern (English_Offset[(KeyValue>>4)&0x0F],2,8,0);
Msingle_font_pattern (English_Offset[(KeyValue&0x0F)],2,16,0);
EepromWrite(0x21,0x66);
Beep(1);
KeyValue=EepromRead(0x21);
Msingle_font_pattern (English_Offset[(KeyValue>>4)&0x0F],2,32,0);
Msingle_font_pattern (English_Offset[(KeyValue&0x0F)],2,40,0);
KeyValue=KeyScan();
while(KeyValue==NOKEY_PRESS);
#endif
319 1
320 1 while(1)
321 1 {
322 2 Get_TimeFromDS1302(Sys_D_T0);
323 2
324 2
325 2
326 2 if(SucFlag==0)
327 2 {
328 3 DispRTC(0,Sys_D_T0);//显示时钟日历
329 3 Display_Line(5,32,5,0,ShowTip[0]);
330 3 Delay_Ret(T0_60S);
331 3 }
332 2 else
333 2 {
334 3 MainMenuShow(MainMenuIndex);
335 3 if(ret_Flag)
336 3 {
337 4 ClearRAM(0,8);
338 4 SucFlag=0;
339 4 }
340 3 }
341 2
342 2 OpenSystem(Sys_D_T0[2],Sys_D_T0[1]);
343 2
344 2 KeyValue=KeyScan();
345 2
346 2 if(KeyValue==NOKEY_PRESS)continue;
347 2
348 2 Light_On();
349 2 NoDelay_Ret();
350 2
351 2 switch(KeyValue)
352 2 {
353 3 case ENTER:
354 3 if(SucFlag==0)//未校验口令则校验权限口令
355 3 {
356 4 if(PwdCheck())//校验口令,正确后显示主菜单
357 4 {
358 5 ClearRAM(0,8);
359 5 MainMenuShow(0);
360 5 SucFlag=1;
361 5 }
362 4 else
363 4 {
364 5 SucFlag=0;
365 5 }
C51 COMPILER V7.50 MAINPROC 12/10/2008 15:08:38 PAGE 7
366 4 }
367 3 else//已校验口令则进入保存相应菜单处理事件
368 3 {
369 4 switch(MainMenuIndex)//菜单命令处理
370 4 {
371 5 case 0://时钟设置
372 5 SystemSet();
373 5 break;
374 5 case 1://闹钟设置
375 5 TimerSetProc();
376 5 break;
377 5 case 2://背光设置--常开\常关或延时关
378 5 WakeSetProc();
379 5 break;
380 5 case 3://本机蜂鸣声开还关设置
381 5 DispInfo();
382 5 break;
383 5 }
384 4 }
385 3 break;
386 3 case MOVE://菜单移动键
387 3 MainMenuIndex++;
388 3 if(MainMenuIndex>=MAINMENUITEMNUM)MainMenuIndex=0;
389 3 break;
390 3 case ESC:
391 3 ClearRAM(0,8);
392 3 SucFlag=0;
393 3 break;
394 3 }
395 2 }
396 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 934 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 108 ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 5
IDATA SIZE = 11 9
BIT SIZE = 5 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -