📄 main.lst
字号:
184 3 case 'W':
185 3 { printf("RCVOK\r\n");
186 4 printf("PROGRAMOK\r\n");
187 4 printf("VERIFYERR\r\n");
188 4 clearbuff();
189 4 }
190 3 break;
191 3
192 3 default:
193 3 clearbuff();
194 3 break;
195 3 }
196 2
197 2 }
198 1 }
199
200 //-------------------------------------------
201 void clearbuff(void)
202 {
203 1 byte i;
204 1 for(i = 0; i < gB_RxIndex; i++)
205 1 { gBa_DebugBuf[i] = 0; }
206 1 gB_RxIndex = 0;
207 1 }
208 ///////////////////////////////////////////////////////////////////////////////
209 // interrupt //
210 ///////////////////////////////////////////////////////////////////////////////
211 void TIME0(void) interrupt 0x01 using 1// for TIME0 0.2ms
212 {
213 1 TL0 = 0x47; //
214 1 gB_T1count++;
215 1 }
216
217 void TIME1(void) interrupt 0x03 using 1// for TIME0 0.2ms
218 {
219 1 TH0 = 0x00;
220 1 gB_T2count ++;
221 1 //-----------------------------------------
222 1 p++ ;
223 1 if(p>=2500)
224 1 {
225 2 p = 0;
226 2 if(r_done) //20041205 有效计时
227 2 {
228 3 Clock[0] = Clock[0]+1;
229 3 SBUF = Clock[0] ;
230 3 if(Clock[0]>=60)
231 3 {
232 4 Clock[0] = 0 ;
233 4 Clock[1] = Clock[1]+1 ;
234 4 if(Clock[1]>=60)
235 4 {
236 5 Clock[1] = 0 ;
237 5 Clock[2] = Clock[2]+1 ;
238 5 if(Clock[2]>=24)
239 5 {
240 6 Clock[2] = 0 ;
C51 COMPILER V7.50 MAIN 07/21/2006 15:57:40 PAGE 5
241 6 }
242 5 }
243 4 }
244 3 }
245 2 }
246 1 }
247
248
249 /*=======================================================
250 显示字符串
251 =======================================================*/
252 void ePutstr(Uchar x,Uchar y, Uchar code *ptr)
253 {
254 1 Uchar i,l=0;
255 1 while (ptr[l] >31){l++;};
256 1
257 1 for (i=0;i<16;i++)
258 1 { DispOneChar(x++,y,ptr[i]);
259 2 if ( x == 16 ){
260 3 x = 0; y ^= 1;
261 3 }
262 2 }
263 1 }
264 /*=======================================================
265 显示光标定位
266 =======================================================*/
267 void Disp_XY( char posx,char posy) {
268 1
269 1 Uchar temp;
270 1
271 1 temp = posx & 0xf;
272 1 posy &= 0x1;
273 1 if ( posy )temp |= 0x40;
274 1 temp |= 0x80;
275 1 LcdWriteCommand(temp,0);
276 1 }
277
278 /*=======================================================
279 按指定位置显示数出一个字符
280 =======================================================*/
281 void DispOneChar(Uchar x,Uchar y,Uchar Wdata) {
282 1
283 1 Disp_XY( x, y ); // 定位显示地址
284 1 LcdWriteData( Wdata ); // 写字符
285 1 }
286
287 /*=======================================================
288 初始化程序, 必须按照产品资料介绍的初始化过程进行
289 =======================================================*/
290 void LcdReset( void )
291 {
292 1 LcdWriteCommand( 0x38, 0); // 显示模式设置(不检测忙信号)
293 1 Delay5Ms();
294 1 LcdWriteCommand( 0x38, 0); // 共三次
295 1 Delay5Ms();
296 1 LcdWriteCommand( 0x38, 0);
297 1 Delay5Ms();
298 1
299 1 LcdWriteCommand( 0x38, 1); // 显示模式设置(以后均检测忙信号)
300 1 LcdWriteCommand( 0x08, 1); // 显示关闭
301 1 LcdWriteCommand( 0x01, 1); // 显示清屏
302 1 LcdWriteCommand( 0x06, 1); // 显示光标移动设置
C51 COMPILER V7.50 MAIN 07/21/2006 15:57:40 PAGE 6
303 1 LcdWriteCommand( 0x0c, 1); // 显示开及光标设置
304 1 }
305
306 /*=======================================================
307 写控制字符子程序: E=1 RS=0 RW=0
308 =======================================================*/
309 void LcdWriteCommand( Uchar CMD,Uchar AttribC ) {
310 1
311 1 if (AttribC) WaitForEnable(); // 检测忙信号?
312 1
313 1 RS = 0; RW = 0; _nop_();
314 1
315 1 DataPort = CMD; _nop_();
316 1 // 送控制字子程序
317 1
318 1 Elcm = 1; _nop_(); _nop_();Elcm = 0; // 操作允许脉冲信号
319 1 }
320
321 /*=======================================================
322 当前位置写字符子程序: E =1 RS=1 RW=0
323 =======================================================*/
324 void LcdWriteData( char dataW ) {
325 1
326 1 WaitForEnable();
327 1 // 检测忙信号
328 1
329 1 RS = 1; RW = 0; _nop_();
330 1
331 1 DataPort = dataW; _nop_();
332 1
333 1 Elcm = 1; _nop_(); _nop_(); Elcm = 0; // 操作允许脉冲信号
334 1
335 1 }
336
337 /*=======================================================
338 正常读写操作之前必须检测LCD控制器状态: CS=1 RS=0 RW=1
339 DB7: 0 LCD控制器空闲; 1 LCD控制器忙
340 ========================================================*/
341 void WaitForEnable( void ) {
342 1
343 1 DataPort = 0xff;
344 1
345 1 RS =0; RW = 1; _nop_();
346 1 Elcm = 1; _nop_(); _nop_();
347 1
348 1 while( DataPort & Busy );
349 1
350 1 Elcm = 0;
351 1 }
352
353 // 短延时
354 void Delay5Ms(void)
355 {
356 1 Uint i = 5552;
357 1 while(i--);
358 1 }
359
360
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 614 ----
C51 COMPILER V7.50 MAIN 07/21/2006 15:57:40 PAGE 7
CONSTANT SIZE = 150 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 41 9
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 + -