⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ds18b20.lst

📁 DS18B20数据采集系统
💻 LST
📖 第 1 页 / 共 4 页
字号:
02CE EC              448                    MOV  A,R4
02CF 600B            449                    JZ  TEMPC12
02D1 540F            450                    ANL  A,#0FH
02D3 C4              451                    SWAP  A
02D4 FC              452                    MOV  R4,A
02D5 E529            453                    MOV  A,TEMPHC            ;TEMPHC HI = 百位数 BCD
02D7 540F            454                    ANL  A,#0FH
02D9 4C              455                    ORL  A,R4
02DA F529            456                    MOV  TEMPHC,A
02DC 22              457     TEMPC12:       RET
                     458     ;---------------------------------------------------------------
02DD                 459     HEX2BCD1:
02DD 75F064          460                   MOV  B,#064H          ;十六进制-> BCD
02E0 84              461                   DIV  AB               ;B= A % 100
02E1 FC              462                   MOV  R4,A             ;R7 = 百位数
02E2 740A            463                   MOV  A,#0AH
02E4 C5F0            464                   XCH  A,B
02E6 84              465                   DIV  AB               ;B = A % B
02E7 C4              466                   SWAP  A
02E8 45F0            467                   ORL  A,B
02EA 22              468                   RET
                     469     ;-------------------------------------------------------------
                     470     ;  小数部分码表
                     471     ;-------------------------------------------------------------
02EB                 472     TEMPDOTTAB:
02EB 00000101        473              DB   00H,00H,01H,01H,02H,03H,03H,04H
02EF 02030304                
02F3 05050606        474              DB   05H,05H,06H,06H,07H,08H,08H,09H
02F7 07080809                
                     475     ;=====================================================
02FB                 476     LOOK_ALARM:
                     477     
02FB 90032A          478               MOV  DPTR,#M_ALAX2   ;指针指到显示信息区
02FE 7402            479               MOV  A,#2            ;显示在第二行
0300 9148            480               CALL  LCD_PRINT
                     481     
0302 74C6            482               MOV  A,#0C6H
0304 713B            483               CALL  TEMP_BJ1
0306 E527            484               MOV  A,TEMP_TH       ;加载TH数据
0308 752F03          485               MOV  LCD_X,#3        ;设置位置
030B 714E            486               CALL  SHOW_DIG2H     ;显示数据
                     487     
030D 74CE            488               MOV  A,#0CEH
030F 713B            489               CALL  TEMP_BJ1
0311 E528            490               MOV  A,TEMP_TL       ;加载TL数据
0313 752F0C          491               MOV  LCD_X,#12       ;设置位置
0316 717B            492               CALL  SHOW_DIG2L     ;显示数据
0318 22              493               RET
                     494     ;--------------------------------------------
0319                 495     M_ALAX1:
0319 204C4F4F        496          DB   " LOOK ALERT CODE",0
031D 4B20414C                
0321 45525420                
A51 MACRO ASSEMBLER  DS18B20                                                              11/15/2006 21:06:21 PAGE     9

0325 434F4445                
0329 00                      
032A                 497     M_ALAX2:
032A 54483A20        498          DB   "TH:      TL:    ",0
032E 20202020                
0332 20544C3A                
0336 20202020                
033A 00                      
                     499     ;--------------------------------------------
033B                 500     TEMP_BJ1:
033B 917B            501               CALL WCOM
033D 90034C          502               MOV  DPTR,#BJ2      ;指针指到显示信息区
0340 7900            503               MOV  R1,#0
0342 7802            504               MOV  R0,#2
                     505     
0344 E9              506     BBJJ2:    MOV  A,R1
0345 93              507               MOVC A,@A+DPTR
0346 9188            508               CALL  WDATA
0348 09              509               INC R1
0349 D8F9            510               DJNZ  R0,BBJJ2
034B 22              511               RET
034C                 512     BJ2:
034C 0043            513           DB  00H,"C"
                     514     
                     515     ;---------------------------------------------------
034E                 516     SHOW_DIG2H:                ;在 LCD 的第二行显示数字
034E 75F064          517               MOV  B,#100
0351 84              518               DIV  AB
0352 2430            519               ADD  A,#30H
0354 C0F0            520               PUSH  B
0356 852FF0          521               MOV  B,LCD_X
0359 9108            522               CALL  LCDP2
035B D0F0            523               POP  B
035D 740A            524               MOV  A,#0AH
035F C5F0            525               XCH  A,B
0361 84              526               DIV  AB
0362 2430            527               ADD  A,#30H
0364 052F            528               INC  LCD_X
0366 C0F0            529               PUSH  B
0368 852FF0          530               MOV  B,LCD_X
036B 9108            531               CALL  LCDP2
036D D0F0            532               POP  B
036F 052F            533               INC  LCD_X
0371 E5F0            534               MOV  A,B
0373 852FF0          535               MOV  B,LCD_X
0376 2430            536               ADD  A,#30H
0378 9108            537               CALL  LCDP2
037A 22              538               RET
                     539     
037B                 540     SHOW_DIG2L:                ;在 LCD 的第二行显示数字
037B 75F064          541               MOV  B,#100
037E 84              542               DIV  AB
037F 740A            543               MOV  A,#0AH
0381 C5F0            544               XCH  A,B
0383 84              545               DIV  AB
0384 2430            546               ADD  A,#30H
0386 C0F0            547               PUSH  B
0388 852FF0          548               MOV  B,LCD_X
038B 9108            549               CALL  LCDP2
038D D0F0            550               POP  B
038F 052F            551               INC  LCD_X
0391 E5F0            552               MOV  A,B
0393 852FF0          553               MOV  B,LCD_X
0396 2430            554               ADD  A,#30H
0398 9108            555               CALL  LCDP2
039A 22              556               RET
A51 MACRO ASSEMBLER  DS18B20                                                              11/15/2006 21:06:21 PAGE    10

                     557     ;-------------------------------------------------------------
                     558     ;显示区 BCD 码温度值刷新子程序
                     559     ;-------------------------------------------------------------
039B                 560     DISPBCD:
039B E52A            561                   MOV  A,TEMPLC
039D 540F            562                   ANL  A,#0FH
039F F570            563                   MOV  70H,A                 ;小数位
03A1 E52A            564                   MOV  A,TEMPLC
03A3 C4              565                   SWAP  A
03A4 540F            566                   ANL  A,#0FH
03A6 F571            567                   MOV  71H,A                 ;个位
03A8 E529            568                   MOV  A,TEMPHC
03AA 540F            569                   ANL  A,#0FH
03AC F572            570                   MOV  72H,A                 ;十位
03AE E529            571                   MOV  A,TEMPHC
03B0 C4              572                   SWAP  A
03B1 540F            573                   ANL  A,#0FH
03B3 F573            574                   MOV  73H,A                 ;百位
03B5 E529            575                   MOV  A,TEMPHC
03B7 54F0            576                   ANL  A,#0F0H
03B9 B41002          577                   CJNE  A,#010H,DISPBCD0
03BC 8010            578                   SJMP  DISPBCD2
                     579     
03BE E529            580     DISPBCD0:     MOV  A,TEMPHC
03C0 540F            581                   ANL  A,#0FH
03C2 700A            582                   JNZ  DISPBCD2               ;十位数是0
03C4 E529            583                   MOV  A,TEMPHC
03C6 C4              584                   SWAP  A
03C7 540F            585                   ANL  A,#0FH
03C9 75730A          586                   MOV  73H,#0AH               ;符号位不显示
03CC F572            587                   MOV  72H,A                  ;十位数显示符号
03CE 22              588     DISPBCD2:     RET
                     589     
                     590     ;==========================================================
                     591     ; LCD 1602 显示子程序
                     592     ;==========================================================
03CF                 593     CONV:
03CF E573            594               MOV  A,73H         ;加载百位数据
03D1 752F06          595               MOV  LCD_X,#6      ;设置位置
03D4 B40102          596               CJNE A,#1,CONV1
03D7 8009            597               JMP  CONV2
03D9 7420            598     CONV1:    MOV  A,#" "
03DB 852FF0          599               MOV  B,LCD_X
03DE 9108            600               CALL  LCDP2
03E0 8002            601               JMP  CONV3
03E2 9100            602     CONV2:    CALL  SHOW_DIG2    ;显示数据
03E4 052F            603     CONV3:    INC  LCD_X             ;
03E6 E572            604               mov  a,72h         ;十位
03E8 9100            605               CALL  SHOW_DIG2
03EA 052F            606               inc  LCD_X
03EC E571            607               mov  a,71h         ;个位
03EE 9100            608               CALL  SHOW_DIG2
03F0 052F            609               inc  LCD_X
03F2 742E            610               MOV  A,#'.'
03F4 852FF0          611               MOV  B,LCD_X
03F7 9108            612               CALL  LCDP2
03F9 E570            613               MOV  A,70h         ;加载小数点位
03FB 052F            614               INC  LCD_X         ;设置位置
03FD 9100            615               CALL  SHOW_DIG2    ;显示数据
03FF 22              616               RET
                     617     ;-------------------------------------------------------
0400                 618     SHOW_DIG2:                 ;在 LCD 的第二行显示数字
0400 2430            619               ADD  A,#30H
0402 852FF0          620               MOV  B,LCD_X
0405 9108            621               CALL  LCDP2
0407 22              622               RET
A51 MACRO ASSEMBLER  DS18B20                                                              11/15/2006 21:06:21 PAGE    11

                     623     ;---------------------------------------------------------
0408                 624     LCDP2:                    ;在LCD的第二行显示字符
0408 C0E0            625              PUSH  ACC        ;
040A E5F0            626              MOV  A,B         ;设置显示地址
040C 24C0            627              ADD  A,#0C0H     ;设置LCD的第二行地址
040E 917B            628              CALL  WCOM       ;写入命令
0410 D0E0            629              POP  ACC         ;由堆栈取出A
0412 9188            630              CALL  WDATA      ;写入数据
0414 22              631              RET
                     632     ;---------------------------------------------------------
                     633     
                     634     
0415                 635     SET_LCD:                     ;对 LCD 做初始化设置及测试
0415 C2A2            636               CLR  LCD_EN
0417 911C            637               CALL  INIT_LCD     ;初始化 LCD
0419 5128            638               CALL  STORE_DATA   ;将自定义字符存入LCD的CGRAM
041B 22              639               RET
041C                 640     INIT_LCD:                  ;8位I/O控制 LCD 接口初始化
041C 7438            641               MOV  A,#38H        ;双列显示,字形5*7点阵
041E 917B            642               CALL  WCOM
0420 91C2            643               call  delay1
0422 7438            644               MOV  A,#38H
0424 917B            645               CALL  WCOM
0426 91C2            646               call  delay1
                     647     
0428 7438            648               MOV  A,#38H
042A 917B            649               CALL  WCOM
042C 91C2            650               call  delay1
042E 740C            651               MOV  A,#0CH        ;开显示,显示光标,光标不闪烁
0430 917B            652               CALL  WCOM
0432 91C2            653               call  delay1
0434 7401            654               MOV  A,#01H        ;清除 LCD 显示屏
0436 917B            655               CALL  WCOM
0438 91C2            656               call  delay1
043A 22              657               RET
                     658     ;==================================================
043B                 659     CLR_LINE1:                   ;清除LCD的第一行字符
043B 7480            660               MOV  A,#80H        ;设置 LCD 的第一行地址
043D 917B            661               CALL  WCOM         ;
043F 7818            662               MOV  R0,#24        ;设置计数值
0441 7420            663         C1:   MOV  A,#' '        ;载入空格符至LCD
0443 9188            664               CALL  WDATA        ;输出字符至LCD
0445 D8FA            665               DJNZ  R0,C1        ;计数结束
0447 22              666               RET
                     667     ;==================================================
0448                 668     LCD_PRINT:       ;在LCD的第一行或第二行显示字符
                     669     
0448 B4010C          670               CJNE  A,#1,LINE2  ;判断是否为第一行
044B 7480            671       LINE1:  MOV  A,#80H       ;设置 LCD 的第一行地址
044D 917B            672               CALL  WCOM        ;写入命令
044F 916D            673               CALL  CLR_LINE    ;清除该行字符数据
0451 7480            674               MOV  A,#80H       ;设置 LCD 的第一行地址
0453 917B            675               CALL  WCOM        ;写入命令
0455 800A            676               JMP  FILL

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -