📄 sub_program.lst
字号:
C51 COMPILER V8.02 SUB_PROGRAM 03/21/2008 14:20:29 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE SUB_PROGRAM
OBJECT MODULE PLACED IN sub_program.OBJ
COMPILER INVOKED BY: d:\mcu\Keil\C51\BIN\C51.EXE sub_program.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "REGX52.H "
2 #include "LCD1602.h"
3 #include "DS1302.h"
4
5
6 /*sbit H = P1^0; //0x0e
7 sbit updown = P1^1; //0x0d
8 sbit choose = P1^2; //0x0b
9 sbit enter = P1^3; //0x07
10 sbit buzzer = P1^4; */
11
12
13 unsigned char lcdmenu=1,resetflag=1;
14 static unsigned char keyflag=0;
15 bit lcdflag=0;
16 bit time_on=0;
17 bit Alarm_on=0;
18 unsigned char keycode;
19 unsigned char oldcode,keyt;
20 unsigned char station;
21 static unsigned char jj;
22 static SYSTEMTIME CurrentTime,Alarm_time; //*ResetTime
23
24 #define th0 0xee; //5ms
25 #define tl0 0x00;
26 #define th1 0xdc; //10ms
27 #define tl1 0x00;
28
29 void key_explain(unsigned char ); //按键解释
30 void currenttime(); //显示当前时间
31 void menu_choose(unsigned char lcdmenu); //菜单选择
32 void lcd_menu(void); //显示菜单
33 void alarm_set(); //闹钟设置
34 void alarm_speaker(); //闹钟启动
35 void time_reset(); //时间重设
36 void delay(unsigned char count);
37
38 void delay(unsigned char count)
39 { unsigned char i,j;
40 1 for(i=0;i<=50;i++)
41 1 for(j=0;j<=count;j++)
42 1 ;
43 1 }
44 void time1_isr(void) interrupt 3 //T1中断
45 { static unsigned char ii;
46 1 //static bit flashflag;
47 1 TR1=0;
48 1 TH1=th1;
49 1 TL1=tl1;
50 1 ii++;
51 1
52 1
53 1 if(ii==50)
54 1 { ii=0;
55 2 //flashflag=~flashflag;
C51 COMPILER V8.02 SUB_PROGRAM 03/21/2008 14:20:29 PAGE 2
56 2
57 2 DS1302_GetTime(&CurrentTime);
58 2 DateToStr(&CurrentTime);
59 2 TimeToStr(&CurrentTime);
60 2
61 2 GotoXY(0,0);
62 2 Print("Date: ");
63 2 Print(CurrentTime.DateString);
64 2
65 2 GotoXY(0,1);
66 2 Print("Time: ");
67 2 Print(CurrentTime.TimeString);
68 2
69 2 }
70 1
71 1 delay(20);
72 1
73 1 TR1=1;
74 1 }
75
76 void time0_isr(void) interrupt 1 //T0中断扫描键盘
77 {
78 1 TR0=0;
79 1 TH0=th0;
80 1 TL0=tl0;
81 1
82 1 keycode=P1;
83 1 keycode=keycode&0x0f;
84 1 oldcode=keycode;
85 1 if(keycode!=0x0f)
86 1 {while(1)
87 2 { keycode=P1;
88 3 keycode=keycode&0x0f;
89 3 if( keycode==0x0f)
90 3 break;
91 3 }
92 2 key_explain(oldcode);
93 2
94 2 }
95 1 TR0=1;
96 1 }
97 void key_explain(unsigned char oldcode) //按键解释
98 {
99 1
100 1 lcdflag=1;
101 1 switch(oldcode)
102 1 {
103 2 case 0x0e: keyflag=0;
104 2 break; //H
105 2
106 2 case 0x0d: keyflag=1;
107 2 break; //updown
108 2
109 2 case 0x0b: keyflag=2;
110 2 break; //choose
111 2
112 2 case 0x07: keyflag=3;
113 2 break; //enter
114 2
115 2 default: break;
116 2 }
117 1
C51 COMPILER V8.02 SUB_PROGRAM 03/21/2008 14:20:29 PAGE 3
118 1 if(keyflag==2)
119 1 { if(station==0)
120 2 lcdmenu++;
121 2 if(station==2||station==3)
122 2 resetflag++;
123 2 }
124 1 if(lcdmenu==4)
125 1 lcdmenu=1;
126 1 if(resetflag==6)
127 1 resetflag=1;
128 1
129 1 }
130 void time_reset() //时间重设
131 {
132 1 SYSTEMTIME ResetTime;
133 1
134 1 TR1=0;
135 1 ResetTime=CurrentTime;
136 1 GotoXY(0,0);
137 1 Print("Date: ");
138 1 Print(ResetTime.DateString);
139 1 GotoXY(0,1);
140 1 Print("Time: ");
141 1 Print(ResetTime.TimeString);
142 1 if(keyflag==1) //updown键 1
143 1 {
144 2 switch(resetflag) //choose健 2
145 2 { case 1:
146 3 ResetTime.Year++;
147 3 if(ResetTime.Year>=100)
148 3 ResetTime.Year=0;
149 3 break;
150 3 case 2:
151 3 ResetTime.Month++;
152 3 if(ResetTime.Month>=13)
153 3 ResetTime.Month=0;
154 3 break;
155 3 case 3:
156 3 ResetTime.Day++;
157 3 if(ResetTime.Day>=31)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -