📄 key.lst
字号:
C51 COMPILER V7.06 KEY 05/14/2009 00:04:43 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE key.c COMPACT BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg51.h>
2 #include <absacc.h>
3 #include <intrins.h>
4 #include "lcd.h"
5 #include "ds1302.h"
6 #include "lcdshow.h"
7 #include "key.h"
8
9 bit CLKSTOP;
10 uchar data count,temp,up_flag,down_flag,done;
11 uint data year;
12
13 /*********************************************/
14 sbit Set = P3^1; //模式切换键
15 sbit Up = P3^2; //加法按钮
16 sbit Down = P3^3; //减法按钮
17 sbit out = P3^4; //立刻跳出调整模式按钮
18 /*********************************************/
19 void mdelay(uint delay)
20 { uint i;
21 1 for(;delay>0;delay--)
22 1 {for(i=0;i<62;i++) //1ms延时.
23 2 {;}
24 2 }
25 1 }
26
27
28
29
30 /*********************************************/
31
32 void setting() //选中后反白显示
33 {
34 1 uchar i;
35 1 switch(count)
36 1 {
37 2 case 1: //year
38 2 r_ShowNumber(0,24,date_buf1[0]);
39 2 r_ShowNumber(0,32,date_buf1[1]);
40 2 i = date_buf[6]>>4;
41 2 i &= 0x0f;
42 2 r_ShowNumber(0,40,i);
43 2 i = date_buf[6] & 0x0f;
44 2 r_ShowNumber(0,48,i);
45 2 break;
46 2
47 2 case 2: //month
48 2 show_date();
49 2 i = date_buf[4]>>4;
50 2 i &= 0x01;
51 2 r_ShowNumber(0,64,i);
52 2 i = date_buf[4] & 0x0f;
53 2 r_ShowNumber(0,72,i);
54 2 break;
55 2
C51 COMPILER V7.06 KEY 05/14/2009 00:04:43 PAGE 2
56 2 case 3://day
57 2 show_date();
58 2 i = date_buf[3]>>4;
59 2 i &= 0x03;
60 2 r_ShowNumber(0,88,i);
61 2 i = date_buf[3] & 0x0f;
62 2 r_ShowNumber(0,96,i);
63 2 break;
64 2
65 2 case 4://week
66 2 i=date_buf[5]&0x0f;
67 2 r_ShowChina(4,72,i);
68 2 break;
69 2
70 2
71 2 case 5://hour
72 2 show_date();
73 2 i = date_buf[2]>>4;
74 2 i &= 0x03;
75 2 r_ShowNumber(2,16,i);
76 2 i = date_buf[2] & 0x0f;
77 2 r_ShowNumber(2,24,i);
78 2 break;
79 2
80 2 case 6://min
81 2 show_time();
82 2 i = date_buf[1]>>4;
83 2 i &= 0x07;
84 2 r_ShowNumber(2,48,i);
85 2 i = date_buf[1] & 0x0f;
86 2 r_ShowNumber(2,56,i);
87 2 break;
88 2
89 2
90 2 case 7://sec
91 2 show_time();
92 2 i = date_buf[0]>>4;
93 2 i &= 0x07;
94 2 r_ShowNumber(2,80,i);
95 2 i = date_buf[0] & 0x0f;
96 2 r_ShowNumber(2,88,i);
97 2 break;
98 2
99 2 default:
100 2 show_date();
101 2 show_time();
102 2 break;
103 2 }
104 1
105 1
106 1 }
107 void Setkey()
108 {
109 1 Set=1;
110 1 if(Set==0)
111 1 {
112 2 mdelay(8);
113 2 count=count+1; //Setkey按一次,count就加1
114 2 done=1; //进入调整模式
115 2 setting();
116 2 while(Set==0); //等待按键释放
117 2 }
C51 COMPILER V7.06 KEY 05/14/2009 00:04:43 PAGE 3
118 1 }
119
120 void outkey() //跳出调整模式,返回默认显示
121 { uchar Second;
122 1 if(out==0)
123 1 { count=0;
124 2 Second=read_all_1302(DS1302_SECOND);
125 2 write_all_1302(0x8e,0x00); //写入允许
126 2 write_all_1302(0x80,Second&0x7f);
127 2 write_all_1302(0x8E,0x80); //禁止写入
128 2 done=0;
129 2 ClearScreen(1);
130 2 ClearScreen(2);
131 2 mdelay(2);
132 2 show_date();
133 2 show_time();
134 2 show_hz();
135 2 show_temp();
136 2 while(out==0);
137 2 //TR0=1;
138 2 }
139 1 }
140 /***************************************************************************************************/
141
142 void addtime()
143 { Up=1;
144 1 if(Up==0)
145 1 { mdelay(8);
146 2 switch(count)
147 2 {
148 3 case 1:
149 3 temp=read_all_1302(DS1302_YEAR); //读取年数
150 3 temp=temp+1; //年数加1
151 3 if((temp&0x0f)==0x0a) temp=(((temp>>4)&0x0f)+1)*16;
152 3
153 3 up_flag=1;
154 3 if(temp>0x85)
155 3 temp=0;
156 3 break;
157 3 case 2:
158 3 temp=read_all_1302(DS1302_MONTH); //读取月数
159 3 temp=temp+1; //月数加1
160 3 if (temp==0x0a) temp=0x10;
161 3 up_flag=1;
162 3 if(temp>0x12)
163 3 temp=1;
164 3 break;
165 3 case 3:
166 3 temp=read_all_1302(DS1302_DAY); //读取日数
167 3 temp=temp+1; //日数加1
168 3 if((temp&0x0f)==0x0a) temp=(((temp>>4)&0x0f)+1)*16;
169 3 up_flag=1;
170 3 if(temp>0x31)
171 3 temp=1;
172 3 break;
173 3 case 4:
174 3 temp=read_all_1302(DS1302_WEEK); //读取星期数
175 3 temp=temp+1; //星期数加1
176 3 if (temp==0x0a) temp=0x10;
177 3 up_flag=1;
178 3 if(temp>0x7)
179 3 temp=1;
C51 COMPILER V7.06 KEY 05/14/2009 00:04:43 PAGE 4
180 3 break;
181 3 case 5:
182 3 temp=read_all_1302(DS1302_HOUR); //读取小时数
183 3 temp=temp+1; //小时数加1
184 3 if((temp&0x0f)==0x0a) temp=(((temp>>4)&0x0f)+1)*16;
185 3 up_flag=1;
186 3 if(temp>0x23) //超过23小时,清零
187 3 temp=0;
188 3 break;
189 3 case 6:
190 3 temp=read_all_1302(DS1302_MINUTE); //读取分数
191 3 temp=temp+1; //分数加1
192 3 if((temp&0x0f)==0x0a) temp=(((temp>>4)&0x0f)+1)*16;
193 3 up_flag=1;
194 3 if(temp>0x59) //超过59分,清零
195 3 temp=0;
196 3 break;
197 3 case 7:
198 3 temp=read_all_1302(DS1302_SECOND); //读取秒数
199 3 temp=temp+1; //秒数加1
200 3 if((temp&0x0f)==0x0a) temp=(((temp>>4)&0x0f)+1)*16;
201 3 up_flag=1; //数据调整后更新标志
202 3 if((temp&0x7f)>0x59) //超过59秒,清零
203 3 temp=0;
204 3 break;
205 3 default:break;
206 3 }
207 2 while(Up==0);
208 2 }
209 1 // flag=1;
210 1 }
211
212 /***************************************************************************************************/
213
214
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -