📄 main.lst
字号:
140 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<设置防抖动清除标志位 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
141 1 if(b_KeyShock==1)
142 1 b_KillShock=1; //如果防抖动标志位开启则开启防抖动标志清除位,
143 1 //300ms后清除防抖动标志。
144 1
145 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<恢复键扫描处理前初始状态 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
146 1 P2=0x0F; //恢复P2口。
147 1 EX0=1; //恢复按键中断。
148 1 }
149
150
151 //*************************************************************************************************
152 //* *
153 //* ****************定时器1中断,用于计时功能和防抖动标志清除以及显示报告**************** *
154 //* *
155 //*************************************************************************************************
156 void vTimer1(void) interrupt 3
157 {
158 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<计时模式计数刷新>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
159 1 if(b_ClockStart==1) //当计时模式开启式,如计时处于运行状态则执行定时计数增加。
160 1 {
161 2 if(b_ClockOppose==0) //正常计时。
162 2 {
163 3 if(uc_TimeCount%21==0)
164 3 {
165 4 uc_TimeCount=1;
166 4 ul_Number++;
167 4 }
168 3 else uc_TimeCount++;
169 3 }
170 2 else
171 2 { //倒计时模式。
172 3 if(uc_TimeCount%21==0)
173 3 {
174 4 uc_TimeCount=1;
175 4 if(ul_ClockOppose>0)
176 4 {
177 5 ul_ClockOppose--;
178 5 ul_Number=ul_ClockOppose;
C51 COMPILER V8.05a MAIN 08/07/2007 14:58:33 PAGE 4
179 5 }
180 4 else
181 4 {
182 5 b_ClockStart=0;
183 5 uc_ReportSymbol=7;
184 5 b_LCDClean=1;
185 5 }
186 4 }
187 3 else uc_TimeCount++;
188 3 }
189 2 }
190 1
191 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<防抖动标志清除>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
192 1 if(b_KillShock==1)
193 1 {
194 2 if(uc_KillCount%5==0) //当防抖动标志位为1时,计时300ms后清除抖动标志位。
195 2 {
196 3 b_KeyShock=0;
197 3 b_KillShock=0;
198 3 uc_KillCount=1;
199 3 }
200 2 else uc_KillCount++;
201 2 }
202 1
203 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<LCD显示报告>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
204 1 if(b_LCDClean==1)
205 1 {
206 2 if(uc_CleanCount==1)
207 2 {
208 3 EX0=0; //关闭键盘中断,此时按键无效。
209 3 vShowReport(uc_ReportSymbol);
210 3 b_ShowMode=1;
211 3 }
212 2 if(uc_CleanCount%40==0) //通过设置b_LCDClean为1便可启动延时清空LCD显示。
213 2 {
214 3 b_LCDClean=0; //关闭清零标志位,清零结束。
215 3 uc_CleanCount=1; //恢复清零计数为初始值1.
216 3 b_ShowMode=0; //恢复显示模式为默认的数字模式。
217 3 b_ReportFlash=0;
218 3 EX0=1; //重新开启键盘中断。
219 3 }
220 2 else
221 2 {
222 3 //<<<<<<<<<<<<<<<<<<<<<<<<<实现闪烁报告功能>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
223 3 if(uc_CleanCount%7==0)
224 3 {
225 4 if(b_ReportFlash==0)
226 4 {
227 5 vCharCopy(uca_FlashBlank);
228 5 b_ReportFlash=1;
229 5 }
230 4 else
231 4 {
232 5 vShowReport(uc_ReportSymbol);
233 5 b_ReportFlash=0;
234 5 }
235 4 }
236 3 uc_CleanCount++;
237 3 }
238 2 }
239 1
240 1 TH1=TIME1H;
C51 COMPILER V8.05a MAIN 08/07/2007 14:58:33 PAGE 5
241 1 TL1=TIME1L;
242 1
243 1 }
244
245
246 //*************************************************************************************************
247 //* *
248 //* ***************************定时器0,定时刷新LED************************* *
249 //* *
250 //*************************************************************************************************
251 void vTimer0(void) interrupt 1
252 {
253 1 if(b_ShowMode==0)
254 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<数字模式>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
255 1 {
256 2 vShowOneNum(*(pucLedNum(ul_Number)+uc_DisCount),6-uc_DisCount); //在LCD上显示1位数字。
257 2 if(uc_DisCount==5)
258 2 uc_DisCount=0; //定时器0在每次被触发时,改变LCD显示。
259 2 else uc_DisCount++; //从第一位到第六位循环显示。
260 2 }
261 1 else
262 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<自定义模式>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
263 1 {
264 2 vShowCustom(uca_ShowCustom[uc_DisCount],uc_DisCount);
265 2 if(uc_DisCount==5)
266 2 uc_DisCount=0; //定时器0在每次被触发时,改变LCD显示。
267 2 else uc_DisCount++; //从第一位到第六位循环显示。
268 2 }
269 1
270 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<恢复定时器0初始状态 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
271 1 TH0=TIME0H;
272 1 TL0=TIME0L;
273 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 540 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 21 ----
IDATA SIZE = ---- ----
BIT SIZE = 6 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -