📄 shizhong.lst
字号:
C51 COMPILER V8.05a SHIZHONG 05/13/2009 17:15:03 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE SHIZHONG
OBJECT MODULE PLACED IN shizhong.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE shizhong.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //design by Mr zhen
2 //date:2009-05-10
3 //采用4-4矩阵键盘中的三个作为按键
4 #include <reg52.h>
5 #include <stdio.h>
6 #include"ds1302.h"
7 #include"lcd1602.h"
8 #define uchar unsigned char
9 #define uint unsigned int
10 uchar temp,num=0,s=0;
11 sbit key_set=P0^4; //功能设计键
12 sbit key_up=P0^5;//上调
13 sbit key_down=P0^6;//下调
14 uchar flag,flag_up,flag_down,id,flag_set,f1,f2,id1[1];//转换标志
15 uchar ucCurtime[7],times[10],date[12];
16 uchar inittime[7]={0x00,0x15,0x17,0x10,0x05,0x01,0x09};//初始化时间09年5月9日下午17点31分00秒
17 void change();
18 void disp_time(void);
19 void disp_set(void);
20 void set(void);
21 void main()
22 {
23 1 LCD_init();
24 1 v_setd1302(inittime);
25 1 delay(100);
26 1 while(1)
27 1 {
28 2 set();
29 2 disp_time();
30 2 }
31 1 }
32
33 void set (void) //功能设置程序
34 {
35 1 P0=0xf7;
36 1 //test(key_set); //检测按键1是否按下
37 1 if (key_set==0)
38 1 {
39 2 flag_set=1;
40 2 f1=1;
41 2 delay(10);
42 2 disp_set();
43 2 if(key_set==0)
44 2 {
45 3 flag_set=1; //真正按下则置标志1
46 3 while(key_set==0);
47 3 }
48 2 }
49 1
50 1 if(flag_set==1) //如果设置键1按下
51 1 {while(flag_set==1)//等待设置键1再次按下之前测试键2、3的功能选择
52 2 {//test(key_up);
53 3 if (key_up==0)
54 3 {
55 4 delay(10);
C51 COMPILER V8.05a SHIZHONG 05/13/2009 17:15:03 PAGE 2
56 4 if(key_up==0)
57 4 {flag=1; //真正按下则置标志1
58 5 while(key_up==0);
59 5 }
60 4 }
61 3 flag_up=flag;
62 3 flag=0;
63 3 if(flag_up==1) //键2功能选择键的功能加1,转向下一功能设置
64 3 {id++;
65 4 delay(10);
66 4 flag_up=0;
67 4 if (id==5) //功能循环选择
68 4 {id=0;}
69 4 }
70 3 //test(key_down);
71 3 if (key_down==0)
72 3 {delay(10);
73 4 if(key_down==0)
74 4 {flag=1; //真正按下则置标志1
75 5 while(key_down==0);
76 5 }
77 4 }
78 3 flag_down=flag;
79 3 flag=0;
80 3 if(flag_down==1) //键3功能选择键的功能减1,转向上一功能设置
81 3 {id--;
82 4 delay(10);
83 4 flag_down=0;
84 4 if (id==0xff) //功能循环选择
85 4 {id=4;}
86 4 }
87 3 //test(key_set);
88 3 if (key_set==0)
89 3 {delay(10);
90 4 if(key_set==0)
91 4 {flag=1; //真正按下则置标志1
92 5 while(key_set==0);
93 5 }
94 4 }
95 3 flag_set=!flag; //键1再次按下则flag_set=!flag=0,退出该while循环
96 3 flag=0;
97 3 disp_set();
98 3 }
99 2 while(flag_set==0) //等待设置键1第三次按下之前测试键2、3进行各项数据的加减调整
100 2 {
101 3 switch(id)
102 3 {
103 4 case 0: //test(key_up); //调年加
104 4 if (key_up==0)
105 4 {delay(20);
106 5 if(key_up==0)
107 5 {flag=1; //真正按下则置标志1
108 6 while(key_up==0);
109 6 }
110 5 }
111 4 flag_up=flag;
112 4 flag=0;
113 4 if(flag_up==1)
114 4 {inittime[6]++;
115 5 if(inittime[6]==0x0a)
116 5 {inittime[6]=0x10;}
117 5 if(inittime[6]==0x1a)
C51 COMPILER V8.05a SHIZHONG 05/13/2009 17:15:03 PAGE 3
118 5 {inittime[6]=0x20;}
119 5 if(inittime[6]==0x2a)
120 5 {inittime[6]=0x30;}
121 5 if(inittime[6]==0x3a)
122 5 {inittime[6]=0x40;}
123 5 if(inittime[6]==0x4a)
124 5 {inittime[6]=0x50;}
125 5 if(inittime[6]==0x5a)
126 5 {inittime[6]=0;}
127 5 }
128 4 // test(key_down); //调年减
129 4 if (key_down==0)
130 4 {delay(10);
131 5 if(key_down==0)
132 5 {flag=1; //真正按下则置标志1
133 6 while(key_down==0);
134 6 }
135 5 }
136 4 flag_down=flag;
137 4 flag=0;
138 4 if(flag_down==1)
139 4 {inittime[6]--;
140 5 if(inittime[6]==0x0f)
141 5 {inittime[6]=0x09;}
142 5 if(inittime[6]==0x1f)
143 5 {inittime[6]=0x19;}
144 5 if(inittime[6]==0x2f)
145 5 {inittime[6]=0x29;}
146 5 if(inittime[6]==0x3f)
147 5 {inittime[6]=0x39;}
148 5 if(inittime[6]==0x4f)
149 5 {inittime[6]=0x49;}
150 5 if(inittime[6]==0xff)
151 5 {inittime[6]=0x59;}
152 5 }
153 4 v_setd1302(inittime);
154 4 break;
155 4 case 1: //test(key_up); //调月份加
156 4 if (key_up==0)
157 4 {delay(10);
158 5 if(key_up==0)
159 5 {flag=1; //真正按下则置标志1
160 6 while(key_up==0);
161 6 }
162 5 }
163 4 flag_up=flag;
164 4 flag=0;
165 4 if(flag_up==1)
166 4 { inittime[4]++;
167 5 if(inittime[4]==0x0a) //完成进制的转换
168 5 {inittime[4]=0x10;}
169 5 if(inittime[4]==0x13)
170 5 {inittime[4]=0x00;}
171 5 }
172 4 //test(key_down); //调月份减
173 4 if (key_down==0)
174 4 {delay(10);
175 5 if(key_down==0)
176 5 {flag=1; //真正按下则置标志1
177 6 while(key_down==0);
178 6 }
179 5 }
C51 COMPILER V8.05a SHIZHONG 05/13/2009 17:15:03 PAGE 4
180 4 flag_down=flag;
181 4 flag=0;
182 4 if(flag_down==1)
183 4 { inittime[4]--;
184 5 if(inittime[4]==0x0f) //完成进制的转换
185 5 {inittime[4]=0x09;}
186 5 if(inittime[4]==0xff)
187 5 {inittime[4]=0x12;}
188 5 }
189 4 v_setd1302(inittime);
190 4 break;
191 4 case 2: //test(key_up); //调日期加
192 4 if (key_up==0)
193 4 {delay(10);
194 5 if(key_up==0)
195 5 {flag=1; //真正按下则置标志1
196 6 while(key_up==0);
197 6
198 6 }
199 5 }
200 4 flag_up=flag;
201 4 flag=0;
202 4 if(flag_up==1)
203 4 {inittime[3]++;
204 5 if(inittime[3]==0x0a)
205 5 {inittime[3]=0x10;}
206 5 if(inittime[3]==0x1a)
207 5 {inittime[3]=0x20;}
208 5 if(inittime[3]==0x2a)
209 5 {inittime[3]=0x30;}
210 5 if(inittime[3]==0x32)
211 5 {inittime[3]=0x00;}
212 5 }
213 4 // test(key_down); //调日期减
214 4 if (key_down==0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -