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

📄 ds18b20-温度控制.lst

📁 基于51的DS18B20_1Wire温度控制等C,ASM源程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
00EF 120085          197             LCALL  WRITE
00F2 E529            198             MOV  A,TEMP_TL     ;TL(报警下限)
00F4 120085          199             LCALL  WRITE
00F7 747F            200             MOV  A,#7FH        ;12位精确度
00F9 120085          201             LCALL  WRITE
00FC 22              202             RET
                     203     
                     204     ;====================================================
                     205     ;功能键扫描子程序
                     206     ;====================================================
00FD                 207     SCANKEY:
00FD 7590F0          208                   MOV  P1,#0F0H
0100 209414          209                   JB  K1,SCAN_K2
0103 71B9            210                   CALL  BEEP_BL
0105 7130            211     SCAN_K1:      CALL  ALERT_TL
0107 717E            212                   CALL  ALERT_PLAY
0109 2094F9          213                   JB   K1,SCAN_K1
010C 71B9            214                   CALL  BEEP_BL
010E 7157            215     SCAN_K11:     CALL  ALERT_TH
0110 717E            216                   CALL  ALERT_PLAY
0112 2094F9          217                   JB    K1,SCAN_K11
0115 71B9            218                   CALL  BEEP_BL
0117 209502          219     SCAN_K2:      JB  K2,SCAN_K3
011A 71B9            220                   CALL  BEEP_BL
011C 20960B          221     SCAN_K3:      JB  K3,SCAN_K4
011F 71B9            222                   CALL  BEEP_BL
0121 120130          223                   LCALL  RESET_ALERT
0124 1200DD          224                   LCALL  RE_18B20
0127 120224          225                   LCALL  WRITE_E2
012A 209702          226     SCAN_K4:      JB  K4,SCAN_END
012D 71B9            227                   CALL  BEEP_BL
012F 22              228     SCAN_END:     RET
                     229     
                     230     ;================================================
                     231     ;设置温度报警值
                     232     ;================================================
0130                 233     RESET_ALERT:
0130 7130            234               CALL  ALERT_TL
0132 717E            235               CALL  ALERT_PLAY
0134 3096FD          236               JNB K3,$              ;K3为位移键
0137 D28C            237               SETB  TR0
0139                 238     RESET_TL:
0139 717E            239               CALL  ALERT_PLAY
013B 30010A          240               JNB  FLAG2,R_TL01
013E 857F75          241               MOV  75H,7FH          ;送入熄灭符
0141 857F76          242               MOV  76H,7FH
0144 717E            243               CALL  ALERT_PLAY
0146 800A            244               JMP   R_TL02
0148 7130            245     R_TL01:   CALL  ALERT_TL
014A 857E75          246               MOV  75H,7EH          ;送设定值
014D 857D76          247               MOV  76H,7DH
0150 717E            248               CALL  ALERT_PLAY      ;显示设定值
0152 309408          249     R_TL02:   JNB  K1,K011A
0155 309513          250               JNB  K2,K011B
0158 30961E          251               JNB  K3,RESET_TH
015B 80DC            252               JMP  RESET_TL
015D                 253     K011A:
015D 0529            254               INC  TEMP_TL
015F E529            255               MOV  A,TEMP_TL
0161 B47803          256               CJNE  A,#120,K012A    ;没有到设定上限值,转
A51 MACRO ASSEMBLER  DS18B20_温禵縚制                                                     12/20/2006 22:04:19 PAGE     5

0164 752900          257               MOV  TEMP_TL,#0
0167 31C3            258     K012A:    CALL  TL_DEL
0169 80CE            259               JMP   RESET_TL
016B                 260     K011B:
016B 1529            261               DEC  TEMP_TL
016D E529            262               MOV  A,TEMP_TL
016F B40003          263               CJNE  A,#00H,K012B   ;没有到设定下限值,转
0172 752977          264               MOV  TEMP_TL,#119
0175 31C3            265     K012B:    CALL  TL_DEL
0177 80C0            266               JMP   RESET_TL
                     267     ;-------------------------------------------------------
0179                 268     RESET_TH:
0179 71B9            269                CALL  BEEP_BL
017B 3096FD          270                JNB  K3,$
017E                 271     RESET_TH1:
017E 717E            272               CALL  ALERT_PLAY
0180 30010A          273               JNB  FLAG2,R_TH01
0183 857F75          274               MOV  75H,7FH          ;送入熄灭符
0186 857F76          275               MOV  76H,7FH
0189 717E            276               CALL  ALERT_PLAY
018B 800A            277               JMP   R_TH02
018D 7157            278     R_TH01:   CALL  ALERT_TH
018F 857E75          279               MOV  75H,7EH          ;
0192 857D76          280               MOV  76H,7DH
0195 717E            281               CALL  ALERT_PLAY
0197 309408          282     R_TH02:   JNB  K1,K021A
019A 309513          283               JNB  K2,K021B
019D 30961E          284               JNB  K3,K002
01A0 80DC            285               JMP  RESET_TH1
01A2                 286     K021A:
01A2 0528            287               INC  TEMP_TH
01A4 E528            288               MOV  A,TEMP_TH
01A6 B47803          289               CJNE  A,#120,K022A   ;没有到设定上限值,转
01A9 752800          290               MOV  TEMP_TH,#0
01AC 31CC            291     K022A:     CALL  TH_DEL
01AE 80CE            292               JMP   RESET_TH1
                     293     
01B0                 294     K021B:
01B0 1528            295               DEC  TEMP_TH         ;减1
01B2 E528            296               MOV  A,TEMP_TH
01B4 B40003          297               CJNE  A,#00H,K022B   ;没有到设定下限值,转
01B7 752877          298               MOV  TEMP_TH,#119
01BA 31CC            299     K022B:    CALL  TH_DEL
01BC 80C0            300               JMP   RESET_TH1
                     301     
01BE 71B9            302     K002:     CALL  BEEP_BL
01C0 C28C            303               CLR  TR0             ;关闭中断
01C2 22              304               RET
                     305     ;-----------------------------------------------------
                     306     ;键延时子程序
                     307     ;多次调用报警值显示程序来延时
                     308     ;-----------------------------------------------------
01C3                 309     TL_DEL:                        ;报警低值延时
01C3 7A0A            310               MOV  R2,#0AH
01C5 7130            311     TL_DEL1:  CALL  ALERT_TL
01C7 717E            312               CALL  ALERT_PLAY
01C9 DAFA            313               DJNZ  R2,TL_DEL1
01CB 22              314               RET
01CC                 315     TH_DEL:                        ;报警高值延时
01CC 7A0A            316               MOV  R2,#0AH
01CE 7157            317     TH_DEL1:  CALL  ALERT_TH
01D0 717E            318               CALL  ALERT_PLAY
01D2 DAFA            319               DJNZ  R2,TH_DEL1
01D4 22              320               RET
                     321     ;====================================================
                     322     ;实时温度值与设定报警温度值 TH、TL 比较子程序
A51 MACRO ASSEMBLER  DS18B20_温禵縚制                                                     12/20/2006 22:04:19 PAGE     6

                     323     ;当实际温度大于 TH 的设定值时,显示“H”,继电器关闭。
                     324     ;当实际温度小于 TH 的设定值时,显示“O”,继电器吸合。
                     325     ;当实际温度小于 TL 的设定值时,显示“L”。
                     326     ;闪动显示标记符 H、L、O
                     327     ;====================================================
01D5                 328     TEMP_COMP:
01D5 D28C            329               SETB  TR0             ;启动中断
01D7 E52C            330               MOV  A,TEMP_ZH
01D9 B52800          331               CJNE  A,TEMP_TH,T_COMP0
01DC                 332     T_COMP0:
01DC 501C            333               JNC   CHULI1
01DE E52C            334               MOV  A,TEMP_ZH
01E0 9529            335               SUBB  A,TEMP_TL       ;减数>被减数,则
01E2 402C            336               JC  CHULI2            ;借位标志位C=1,转
01E4 300108          337               JNB  FLAG2,T_COMP1    ;FLAG2=0,显示标记字符
01E7 75740A          338               MOV  74H,#0AH         ;熄灭符
01EA 1202E1          339               LCALL  TEMP_PLAER
01ED 8006            340               JMP  T_COMP2
01EF 757400          341     T_COMP1:  MOV  74H,#00H
01F2 1202E1          342               LCALL  TEMP_PLAER     ;显示"O"
01F5 C293            343     T_COMP2:  CLR   RELAY           ;继电器吸合
01F7 C28C            344               CLR  TR0              ;关闭中断
01F9 22              345               RET
                     346     ;---------------------------------------------
                     347     ;超温处理
                     348     ;---------------------------------------------
01FA                 349     CHULI1:
01FA D293            350               SETB  RELAY           ;继电器关闭
01FC 300108          351               JNB  FLAG2,CHULI10
01FF 75740A          352               MOV  74H,#0AH         ;熄灭符
0202 1202E1          353               LCALL  TEMP_PLAER
0205 8006            354               JMP  CHULI11
0207 75740D          355     CHULI10:  MOV  74H,#0DH
020A 1202E1          356               LCALL  TEMP_PLAER     ;显示"H"
                     357              ; CALL  BEEP_BL        ;蜂鸣器响
020D                 358     CHULI11:
020D C28C            359               CLR  TR0              ;关闭中断
020F 22              360               RET
                     361     ;---------------------------------------------
                     362     ;欠温处理
                     363     ;---------------------------------------------
0210                 364     CHULI2:                         ;欠温处理
0210 300108          365               JNB  FLAG2,CHULI20
0213 75740A          366               MOV  74H,#0AH         ;熄灭符
0216 1202E1          367               LCALL  TEMP_PLAER
0219 8006            368               JMP  CHULI21
021B 75740C          369     CHULI20:  MOV  74H,#0CH
021E 1202E1          370               LCALL  TEMP_PLAER     ;显示"L"
                     371              ; CALL  BEEP_BL        ;蜂鸣器响
0221 C28C            372     CHULI21:  CLR  TR0              ;关闭中断
0223 22              373               RET
                     374     ;------------------------------------------------------------
                     375     ;把 DS18B20 暂存器里的温度报警值拷贝到EEROM
                     376     ;------------------------------------------------------------
0224                 377     WRITE_E2:
0224 115B            378             CALL  RESET
0226 74CC            379             MOV  A,#0CCH        ;跳过ROM匹配
0228 120085          380             LCALL  WRITE
022B 7448            381             MOV  A,#48H         ;温度报警值拷贝到EEROM
022D 120085          382             LCALL  WRITE
0230 22              383             RET
                     384     ;--------------------------------------------------------------
                     385     ;把 DS18B20 EEROM 里的温度报警值拷贝回暂存器
                     386     ;-------------------------------------------------------------
0231                 387     READ_E2:
0231 115B            388             CALL  RESET
A51 MACRO ASSEMBLER  DS18B20_温禵縚制                                                     12/20/2006 22:04:19 PAGE     7

0233 74CC            389             MOV  A,#0CCH        ;跳过ROM匹配
0235 120085          390             LCALL  WRITE
0238 74B8            391             MOV  A,#0B8H        ;温度报警值拷贝回暂存器
023A 1185            392             CALL  WRITE
023C 22              393             RET
                     394     
                     395     ;*****************************************************
                     396     ;  处理温度 BCD 码子程序
                     397     ;****************************************************
023D E527            398     CONVTEMP:      MOV  A,TEMPH       ;判温度是否零下
023F 5480            399                    ANL  A,#80H
0241 6014            400                    JZ  TEMPC1         ;温度零上转
0243 C3              401                    CLR  C

⌨️ 快捷键说明

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