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

📄 ds18b20-dsy.lst

📁 DS18B20+1602LCD显示温度控制
💻 LST
📖 第 1 页 / 共 4 页
字号:
00E6 74CC            196             MOV  A,#0CCH       ;跳过ROM匹配
00E8 120088          197             LCALL  WRITE
00EB 744E            198             MOV  A,#4EH        ;写暂存寄存器
00ED 120088          199             LCALL  WRITE
00F0 E528            200             MOV  A,TEMP_TH     ;TH(报警上限)
00F2 120088          201             LCALL  WRITE
00F5 E529            202             MOV  A,TEMP_TL     ;TL(报警下限)
00F7 120088          203             LCALL  WRITE
00FA 747F            204             MOV  A,#7FH        ;12位精确度
00FC 120088          205             LCALL  WRITE
00FF 22              206             RET
                     207     
                     208     ;====================================================
                     209     ;功能键扫描子程序
                     210     ;====================================================
0100                 211     SCANKEY:
0100 7590F0          212                   MOV  P1,#0F0H
0103 209414          213                   JB  K1,SCAN_K2
0106 71BB            214                   CALL  BEEP_BL
0108 7132            215     SCAN_K1:      CALL  ALERT_TL
010A 7180            216                   CALL  ALERT_PLAY
010C 2094F9          217                   JB   K1,SCAN_K1
010F 71BB            218                   CALL  BEEP_BL
0111 7159            219     SCAN_K11:     CALL  ALERT_TH
0113 7180            220                   CALL  ALERT_PLAY
0115 2094F9          221                   JB    K1,SCAN_K11
0118 71BB            222                   CALL  BEEP_BL
011A 209502          223     SCAN_K2:      JB  K2,SCAN_K3
011D 71BB            224                   CALL  BEEP_BL
011F 20960B          225     SCAN_K3:      JB  K3,SCAN_K4
0122 71BB            226                   CALL  BEEP_BL
0124 120133          227                   LCALL  RESET_ALERT
0127 1200E0          228                   LCALL  RE_18B20
012A 120226          229                   LCALL  WRITE_E2
012D 209702          230     SCAN_K4:      JB  K4,SCAN_END
0130 71BB            231                   CALL  BEEP_BL
0132 22              232     SCAN_END:     RET
                     233     
                     234     ;================================================
                     235     ;设置温度报警值
                     236     ;================================================
0133                 237     RESET_ALERT:
0133 7132            238               CALL  ALERT_TL
0135 7180            239               CALL  ALERT_PLAY
0137 3096FD          240               JNB K3,$              ;K3为位移键
013A D28C            241               SETB  TR0
013C                 242     RESET_TL:
013C 7180            243               CALL  ALERT_PLAY
013E 30010A          244               JNB  FLAG2,R_TL01
0141 857F75          245               mov  75H,7fh          ;送入熄灭符
0144 857F76          246               mov  76H,7fh
0147 7180            247               CALL  ALERT_PLAY
0149 800A            248               JMP   R_TL02
014B 7132            249     R_TL01:   CALL  ALERT_TL
014D 857E75          250               mov  75h,7Eh          ;送设定值
0150 857D76          251               mov  76h,7Dh
0153 7180            252               CALL  ALERT_PLAY      ;显示设定值
0155 309408          253     R_TL02:   JNB  K1,K011A
0158 309513          254               JNB  K2,K011B
015B 30961E          255               JNB  K3,RESET_TH
015E 80DC            256               JMP  RESET_TL
A51 MACRO ASSEMBLER  DS18B20_DSY                                                          03/29/2005 16:14:10 PAGE     5

0160                 257     K011A:
0160 0529            258               INC  TEMP_TL
0162 E529            259               MOV  A,TEMP_TL
0164 B47803          260               CJNE  A,#120,K012A    ;没有到设定上限值,转
0167 752900          261               MOV  TEMP_TL,#0
016A 31C6            262     K012A:    CALL  TL_DEL
016C 80CE            263               JMP   RESET_TL
016E                 264     K011B:
016E 1529            265               DEC  TEMP_TL
0170 E529            266               MOV  A,TEMP_TL
0172 B40003          267               CJNE  A,#00H,K012B   ;没有到设定下限值,转
0175 752977          268               MOV  TEMP_TL,#119
0178 31C6            269     K012B:    CALL  TL_DEL
017A 80C0            270               JMP   RESET_TL
                     271     ;-------------------------------------------------------
017C                 272     RESET_TH:
017C 71BB            273                CALL  BEEP_BL
017E 3096FD          274                JNB  K3,$
0181                 275     RESET_TH1:
0181 7180            276               CALL  ALERT_PLAY
0183 30010A          277               JNB  FLAG2,R_TH01
0186 857F75          278               mov  75H,7fh          ;送入熄灭符
0189 857F76          279               mov  76H,7fh
018C 7180            280               CALL  ALERT_PLAY
018E 800A            281               JMP   R_TH02
0190 7159            282     R_TH01:   CALL  ALERT_TH
0192 857E75          283               mov  75h,7Eh          ;
0195 857D76          284               mov  76h,7Dh
0198 7180            285               CALL  ALERT_PLAY
019A 309408          286     R_TH02:   JNB  K1,K021A
019D 309513          287               JNB  K2,K021B
01A0 30961E          288               JNB  K3,K002
01A3 80DC            289               JMP  RESET_TH1
01A5                 290     K021A:
01A5 0528            291               INC  TEMP_TH
01A7 E528            292               MOV  A,TEMP_TH
01A9 B47803          293               CJNE  A,#120,K022A   ;没有到设定上限值,转
01AC 752800          294               MOV  TEMP_TH,#0
01AF 31CF            295     K022A:     CALL  TH_DEL
01B1 80CE            296               JMP   RESET_TH1
                     297     
01B3                 298     K021B:
01B3 1528            299               DEC  TEMP_TH         ;减1
01B5 E528            300               MOV  A,TEMP_TH
01B7 B40003          301               CJNE  A,#00H,K022B   ;没有到设定下限值,转
01BA 752877          302               MOV  TEMP_TH,#119
01BD 31CF            303     K022B:    CALL  TH_DEL
01BF 80C0            304               JMP   RESET_TH1
                     305     
01C1 71BB            306     K002:     CALL  BEEP_BL
01C3 C28C            307               CLR  TR0             ;关闭中断
01C5 22              308               RET
                     309     ;-----------------------------------------------------
                     310     ;键延时子程序
                     311     ;多次调用报警值显示程序来延时
                     312     ;-----------------------------------------------------
01C6                 313     TL_DEL:                        ;报警低值延时
01C6 7A0A            314               MOV  R2,#0AH
01C8 7132            315     TL_DEL1:  CALL  ALERT_TL
01CA 7180            316               CALL  ALERT_PLAY
01CC DAFA            317               DJNZ  R2,TL_DEL1
01CE 22              318               RET
01CF                 319     TH_DEL:                        ;报警高值延时
01CF 7A0A            320               MOV  R2,#0AH
01D1 7159            321     TH_DEL1:  CALL  ALERT_TH
01D3 7180            322               CALL  ALERT_PLAY
A51 MACRO ASSEMBLER  DS18B20_DSY                                                          03/29/2005 16:14:10 PAGE     6

01D5 DAFA            323               DJNZ  R2,TH_DEL1
01D7 22              324               RET
                     325     ;====================================================
                     326     ;实时温度值与设定报警温度值 TH、TL 比较子程序
                     327     ;当实际温度大于 TH 的设定值时,显示“H”,继电器关闭。
                     328     ;当实际温度小于 TH 的设定值时,显示“O”,继电器吸合。
                     329     ;当实际温度小于 TL 的设定值时,显示“L”。
                     330     ;闪动显示标记符 H、L、O
                     331     ;====================================================
01D8                 332     TEMP_COMP:
01D8 D28C            333               SETB  TR0             ;启动中断
01DA E528            334               MOV  A,TEMP_TH
01DC 952C            335               SUBB  A,TEMP_ZH       ;减数>被减数,则
01DE 401C            336               JC  CHULI1            ;借位标志位C=1,转
01E0 E52C            337               MOV  A,TEMP_ZH
01E2 9529            338               SUBB  A,TEMP_TL       ;减数>被减数,则
01E4 402C            339               JC  CHULI2            ;借位标志位C=1,转
01E6 300108          340               JNB  FLAG2,T_COMP1    ;FLAG2=0,显示标记字符
01E9 75740A          341               MOV  74H,#0AH         ;熄灭符
01EC 1202E3          342               LCALL  DISP1
01EF 8006            343               JMP  T_COMP2
01F1 757400          344     T_COMP1:  MOV  74H,#00H
01F4 1202E3          345               LCALL  DISP1          ;显示"O"
01F7 C293            346     T_COMP2:  CLR   RELAY           ;继电器吸合
01F9 C28C            347               CLR  TR0              ;关闭中断
01FB 22              348               RET
                     349     ;---------------------------------------------
                     350     ;超温处理
                     351     ;---------------------------------------------
01FC                 352     CHULI1:
01FC D293            353               SETB  RELAY           ;继电器关闭
01FE 300108          354               JNB  FLAG2,CHULI10
0201 75740A          355               MOV  74H,#0AH         ;熄灭符
0204 1202E3          356               LCALL  DISP1
0207 8006            357               JMP  CHULI11
0209 75740D          358     CHULI10:  MOV  74H,#0DH         
020C 1202E3          359               LCALL  DISP1          ;显示"H"
                     360               ;CALL  BEEP_BL        ;蜂鸣器响
020F                 361     CHULI11:
020F C28C            362               CLR  TR0              ;关闭中断
0211 22              363               RET
                     364     ;---------------------------------------------
                     365     ;欠温处理
                     366     ;---------------------------------------------
0212                 367     CHULI2:                         ;欠温处理
0212 300108          368               JNB  FLAG2,CHULI20
0215 75740A          369               MOV  74H,#0AH         ;熄灭符
0218 1202E3          370               LCALL  DISP1
021B 8006            371               JMP  CHULI21
021D 75740C          372     CHULI20:  MOV  74H,#0CH         
0220 1202E3          373               LCALL  DISP1          ;显示"L"
                     374               ;CALL  BEEP_BL        ;蜂鸣器响
0223 C28C            375     CHULI21:  CLR  TR0              ;关闭中断
0225 22              376               RET
                     377     ;------------------------------------------------------------
                     378     ;把 DS18B20 暂存器里的温度报警值拷贝到EEROM
                     379     ;------------------------------------------------------------
0226                 380     WRITE_E2:
0226 115E            381             CALL  RESET
0228 74CC            382             MOV  A,#0CCH        ;跳过ROM匹配
022A 120088          383             LCALL  WRITE
022D 7448            384             MOV  A,#48H         ;温度报警值拷贝到EEROM
022F 120088          385             LCALL  WRITE
0232 22              386             RET
                     387     ;--------------------------------------------------------------
                     388     ;把 DS18B20 EEROM 里的温度报警值拷贝回暂存器
A51 MACRO ASSEMBLER  DS18B20_DSY                                                          03/29/2005 16:14:10 PAGE     7

                     389     ;-------------------------------------------------------------
0233                 390     READ_E2:
0233 115E            391             CALL  RESET
0235 74CC            392             MOV  A,#0CCH        ;跳过ROM匹配
0237 120088          393             LCALL  WRITE
023A 74B8            394             MOV  A,#0B8H        ;温度报警值拷贝回暂存器
023C 1188            395             CALL  WRITE
023E 22              396             RET
                     397     
                     398     ;*****************************************************
                     399     ;  处理温度 BCD 码子程序

⌨️ 快捷键说明

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