📄 lcd_main.ls1
字号:
; //0-9的ASCII码,0x20为空,0x2d为负号
318 ;
319 ; unsigned char i;
320 ;
321 ; static unsigned char bdata StateREG; //可位寻址的状态寄存器
322 ; sbit DS1820ON = StateREG^0; //DS1820是否存在
323 ; sbit SetTF = StateREG^1; //是否是在温度设置状态
324 ; sbit KeySETDown = StateREG^2; //是否已按过SET键标识
325 ; sbit PowTF = StateREG^3; //电源标识
326 ; sbit KeyTF = StateREG^4; //键盘是否允许
327 ;
328 ; //sbit KeySETDowning = StateREG^5; //SET是否正在按下
329 ; static unsigned char bdata TLV _at_ 0x0029; //温度变量高低位
330 ; static unsigned char bdata THV _at_ 0x0028;
331 ; static signed char TMV; //转换后的温度值
332 ; static unsigned char KeyV,TempKeyV; //键值
333 ; static signed char TMRomV _at_ 0x0027; //高温限制
334 ; static signed char TMSetV _at_ 0x0026; //温度设定值
335 ; static unsigned char KSDNum; //SET键连按时的采集次数
336 ; static unsigned char IntNum,IntNum2,IntNum3; //中断发生次数,IntNum用于SET长按检测,In
tNum2用于设定状态时LCD闪烁
337 ; static signed char LCD_One,LCD_Two,LCD_Three; //LCD的显示位 LCD_One为十位,LCD_Two为个位
338 ; static signed char LCD_One_set,LCD_Two_set,LCD_Three_set; //设置时的LCD值
339 ; static unsigned char Sign, Sign_Set; //负号标识
340 ;
341 ; void WriteDataLCM(unsigned char WDLCM);
342 ; void WriteCommandLCM(unsigned char WCLCM,BuysC);
343 ; unsigned char ReadDataLCM(void);
344 ; unsigned char ReadStatusLCM(void);
345 ; void LCMInit(void);
346 ; void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
347 ; void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);
348 ; void Delay5Ms(void);
349 ; void Delay400Ms(void);
350 ;
351 ; unsigned char code cdle_net[] = {" WellCome! "};
352 ; unsigned char code email[] = {" Press Power Key"};
353 ; unsigned char cur_temper[]={"Current Temp: "};
354 ; unsigned char cur_temper_set[]={"T_Set: "};
355 ; unsigned char BF = 0; //定时中断标志,=1时显示当前温度值,=0显示欢迎
356 ;
357 ; void main(void)
358
---- 359 RSEG ?PR?main?LCD_MAIN
0000 360 main:
361 USING 0
362 ; SOURCE LINE # 72
363 ; {
364 ; SOURCE LINE # 73
365 ; void InitDS1820(void); //定义函数
366 ; void ROMDS1820(void);
367 ; void TMVDS1820(void);
368 ; void TMRDS1820(void);
369 ; void TMWDS1820(void);
370 ; void TMREDS1820(void);
371 ; void TMERDS1820(void);
372 ; void ReadDS1820(void);
373 ; void WriteDS1820(void);
374 ; void Delay_510(void);
A51 MACRO ASSEMBLER LCD_MAIN 08/12/2004 17:38:42 PAGE 7
375 ; void Delay_110(void);
376 ; void Delay_10ms(void);
377 ; void Delay_4s(void);
378 ; void V2ToV(void);
379 ;
380 ; StateREG = 0; //初始化变量
381 ; SOURCE LINE # 89
0000 E4 382 CLR A
0001 F500 F 383 MOV StateREG,A
384 ; //SetTF = 1;
385 ; PowTF = 1; //关电源
386 ; SOURCE LINE # 91
0003 D200 F 387 SETB PowTF
388 ; //KeyTF = 1;
389 ; THV = 0;
390 ; SOURCE LINE # 93
0005 F528 391 MOV THV,A
392 ; TLV = 0;
393 ; SOURCE LINE # 94
0007 F529 394 MOV TLV,A
395 ; TMV = 0;
396 ; SOURCE LINE # 95
0009 F500 F 397 MOV TMV,A
398 ; KeyV = 0;
399 ; SOURCE LINE # 96
000B F500 F 400 MOV KeyV,A
401 ; TempKeyV = 0;
402 ; SOURCE LINE # 97
000D F500 F 403 MOV TempKeyV,A
404 ; KSDNum = 0;
405 ; SOURCE LINE # 98
000F F500 F 406 MOV KSDNum,A
407 ; IntNum = 0;
408 ; SOURCE LINE # 99
0011 F500 F 409 MOV IntNum,A
410 ; IntNum2 = 0;
411 ; SOURCE LINE # 100
0013 F500 F 412 MOV IntNum2,A
413 ; IntNum3 = 0;
414 ; SOURCE LINE # 101
0015 F500 F 415 MOV IntNum3,A
416 ;
417 ;
418 ;
419 ; InitDS1820(); //初始化
420 ; SOURCE LINE # 105
0017 120000 F 421 LCALL InitDS1820
422 ; ROMDS1820(); //跳过ROM
423 ; SOURCE LINE # 106
001A 120000 F 424 LCALL ROMDS1820
425 ; TMERDS1820(); //E2PRAM中温度上限值调入RAM
426 ; SOURCE LINE # 107
001D 120000 F 427 LCALL TMERDS1820
428 ; InitDS1820(); //初始化
429 ; SOURCE LINE # 108
0020 120000 F 430 LCALL InitDS1820
431 ; ROMDS1820(); //跳过ROM
432 ; SOURCE LINE # 109
0023 120000 F 433 LCALL ROMDS1820
434 ; TMRDS1820(); //读出温度指令
435 ; SOURCE LINE # 110
0026 120000 F 436 LCALL TMRDS1820
437 ; ReadDS1820(); //读出温度值和上限值
438 ; SOURCE LINE # 111
0029 120000 F 439 LCALL ReadDS1820
440 ; TMSetV = TMRomV; //拷贝保存在DS18B20ROM里的上限值到TMSetV
A51 MACRO ASSEMBLER LCD_MAIN 08/12/2004 17:38:42 PAGE 8
441 ; SOURCE LINE # 112
002C 852726 442 MOV TMSetV,TMRomV
443 ;
444 ; Delay400Ms(); //启动等待,等LCM讲入工作状态
445 ; SOURCE LINE # 114
002F 120000 F 446 LCALL Delay400Ms
447 ; LCMInit(); //LCM初始化
448 ; SOURCE LINE # 115
0032 120000 F 449 LCALL LCMInit
450 ; Delay5Ms(); //延时片刻(可不要)
451 ; SOURCE LINE # 116
0035 120000 F 452 LCALL Delay5Ms
453 ;
454 ; EA = 1; //允许CPU中断
455 ; SOURCE LINE # 118
0038 D2AF 456 SETB EA
457 ; ET0 = 1; //定时器0中断打开
458 ; SOURCE LINE # 119
003A D2A9 459 SETB ET0
460 ; TMOD = 0x1; //设定时器0为模式1,16位模式
461 ; SOURCE LINE # 120
003C 758901 462 MOV TMOD,#01H
463 ; TH0=0xB1;
464 ; SOURCE LINE # 121
003F 758CB1 465 MOV TH0,#0B1H
466 ; TL0=0xDF; //设定时值为20000us(20ms)
467 ; SOURCE LINE # 122
0042 758ADF 468 MOV TL0,#0DFH
469 ; TR0 = 1; //开始定时
470 ; SOURCE LINE # 123
0045 D28C 471 SETB TR0
0047 472 ?C0003:
473 ;
474 ; do
475 ; {
476 ; SOURCE LINE # 126
477 ; if (BF==0)
478 ; SOURCE LINE # 127
0047 E500 F 479 MOV A,BF
0049 7019 480 JNZ ?C0004
481 ; {
482 ; SOURCE LINE # 128
483 ; DisplayListChar(0, 0, cdle_net); //显示欢迎
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -