?? 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 + -