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

📄 ds18b20-温度控制.lst

📁 基于51的DS18B20_1Wire温度控制等C,ASM源程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
0244 E526            402                    MOV  A,TEMPL       ;二进制数求补(双字节)
0246 F4              403                    CPL  A             ;取反加1
0247 2401            404                    ADD  A,#01H
0249 F526            405                    MOV  TEMPL,A
024B E527            406                    MOV  A,TEMPH       ;-
024D F4              407                    CPL  A
024E 3400            408                    ADDC  A,#00H
0250 F527            409                    MOV  TEMPH,A          ;TEMPHC HI =符号位
0252 752A0B          410                    MOV  TEMPHC,#0BH
0255 8003            411                    SJMP  TEMPC11
                     412     
0257 752A0A          413     TEMPC1:        MOV  TEMPHC,#0AH     ;
025A E52A            414     TEMPC11:       MOV  A,TEMPHC
025C C4              415                    SWAP  A
025D F52A            416                    MOV  TEMPHC,A
025F E526            417                    MOV  A,TEMPL
0261 540F            418                    ANL  A,#0FH
0263 90029D          419                    MOV  DPTR,#TEMPDOTTAB
0266 93              420                    MOVC  A,@A+DPTR
0267 F52B            421                    MOV  TEMPLC,A            ;TEMPLC  LOW=小数部分 BCD
                     422     
0269 E526            423                    MOV  A,TEMPL             ;整数部分
026B 54F0            424                    ANL  A,#0F0H
026D C4              425                    SWAP  A
026E F526            426                    MOV  TEMPL,A
0270 E527            427                    MOV  A,TEMPH
0272 540F            428                    ANL  A,#0FH
0274 C4              429                    SWAP  A
0275 4526            430                    ORL  A,TEMPL
0277 F52C            431                    MOV  TEMP_ZH,A           ;组合后的值存入TEMP_ZH
0279 120322          432                    LCALL  HEX2BCD1
027C F526            433                    MOV  TEMPL,A
027E 54F0            434                    ANL  A,#0F0H
0280 C4              435                    SWAP  A
0281 452A            436                    ORL  A,TEMPHC            ;TEMPHC LOW = 十位数 BCD
0283 F52A            437                    MOV  TEMPHC,A
0285 E526            438                    MOV  A,TEMPL
0287 540F            439                    ANL  A,#0FH
0289 C4              440                    SWAP  A                  ;TEMPLC HI = 个位数 BCD
028A 452B            441                    ORL  A,TEMPLC
028C F52B            442                    MOV  TEMPLC,A
028E EF              443                    MOV  A,R7
028F 600B            444                    JZ  TEMPC12
0291 540F            445                    ANL  A,#0FH
0293 C4              446                    SWAP  A
0294 FF              447                    MOV  R7,A
0295 E52A            448                    MOV  A,TEMPHC            ;TEMPHC HI = 百位数 BCD
0297 540F            449                    ANL  A,#0FH
0299 4F              450                    ORL  A,R7
029A F52A            451                    MOV  TEMPHC,A
029C 22              452     TEMPC12:       RET
                     453     ;-----------------------------------------------------------
                     454     ;  小数部分码表
A51 MACRO ASSEMBLER  DS18B20_温禵縚制                                                     12/20/2006 22:04:19 PAGE     8

                     455     ;-----------------------------------------------------------
029D 00010102        456     TEMPDOTTAB:  DB   00H,01H,01H,02H,03H,03H,04H,04H,05H,06H
02A1 03030404                
02A5 0506                    
02A7 06070808        457                  DB   06H,07H,08H,08H,09H,09H
02AB 0909                    
                     458     
                     459     ;===========================================================
                     460     
                     461     ;显示区 BCD 码温度值刷新子程序
                     462     
                     463     ;===========================================================
                     464     
02AD E52B            465     DISPBCD:      MOV  A,TEMPLC
02AF 540F            466                   ANL  A,#0FH
02B1 F570            467                   MOV  70H,A                 ;小数位
02B3 E52B            468                   MOV  A,TEMPLC
02B5 C4              469                   SWAP  A
02B6 540F            470                   ANL  A,#0FH
02B8 F571            471                   MOV  71H,A                 ;个位
02BA E52A            472                   MOV  A,TEMPHC
02BC 540F            473                   ANL  A,#0FH
02BE F572            474                   MOV  72H,A                 ;十位
02C0 E52A            475                   MOV  A,TEMPHC
02C2 C4              476                   SWAP  A
02C3 540F            477                   ANL  A,#0FH
02C5 F573            478                   MOV  73H,A                 ;百位
02C7 E52A            479                   MOV  A,TEMPHC
02C9 54F0            480                   ANL  A,#0F0H
02CB B41002          481                   CJNE  A,#010H,DISPBCD0
02CE 8010            482                   SJMP  DISPBCD2
                     483     
02D0 E52A            484     DISPBCD0:     MOV  A,TEMPHC
02D2 540F            485                   ANL  A,#0FH
02D4 700A            486                   JNZ  DISPBCD2               ;十位数是0
02D6 E52A            487                   MOV  A,TEMPHC
02D8 C4              488                   SWAP  A
02D9 540F            489                   ANL  A,#0FH
02DB 75730A          490                   MOV  73H,#0AH               ;符号位不显示
02DE F572            491                   MOV  72H,A                  ;十位数显示符号
02E0 22              492     DISPBCD2:     RET
                     493     
                     494     ;***************************************************************
                     495     
                     496     ;     温度显示子程序
                     497     
                     498     ;***************************************************************
                     499     ;用5位共阳数码管显示,数据在70H-73H单元内,字符在74H内
                     500     ;P0口输出段码数据,P2 口作扫描控制,
                     501     ;每个 LED 数码管亮 2MS 时间再逐位循环。
                     502     ;================================================================
02E1                 503     TEMP_PLAER:
02E1 7970            504                  MOV  R1,#70H             ;指向显示数据首址
02E3 7D7F            505                  MOV  R5,#7FH            ;扫描控制字初值
02E5 7580FF          506     PLAY:        MOV  P0,#0FFH
02E8 ED              507                  MOV  A,R5                ;扫描字放入A
02E9 F5A0            508                  MOV  P2,A
02EB E7              509                  MOV  A,@R1               ;取显示数据到A
02EC 90030B          510                  MOV  DPTR,#TAB           ;取段码表地址
02EF 93              511                  MOVC  A,@A+DPTR          ;查显示数据对应段码
02F0 F580            512                  MOV  P0,A                ;段码放入P0口
02F2 ED              513                  MOV  A,R5
02F3 20E602          514                  JB   ACC.6,LOOP5         ;小数点处理
02F6 C287            515                  CLR  P0.7
02F8 120319          516     LOOP5:       LCALL  DL_MS              ;显示2MS
02FB 09              517                  INC  R1                   ;指向下一个地址
A51 MACRO ASSEMBLER  DS18B20_温禵縚制                                                     12/20/2006 22:04:19 PAGE     9

02FC ED              518                  MOV  A,R5                 ;放回 R5 内
02FD 30E304          519                  JNB  ACC.3,ENDOUT        ;ACC.3=0时一次显示结束
0300 03              520                  RR  A                    ;A 中数据循环左移
0301 FD              521                  MOV  R5,A                ;放入 R5 中
0302 41E5            522                  AJMP  PLAY               ;跳回 PLAY 循环
0304 7580FF          523     ENDOUT:      MOV  P0,#0FFH            ;一次显示结束,P0口复位
0307 75A0FF          524                  MOV  P2,#0FFH            ;P2口复位
030A 22              525                  RET
                     526     
030B                 527     TAB:
030B C0F9A4B0        528      DB  0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0BFH,0C7H,89H
030F 999282F8                
0313 8090FFBF                
0317 C789                    
                     529     ;   “0"  “1" “2" “3" “4"“5"“6"“7"“8"“9"“灭" “-" “L”“H"
                     530     
0319 7E0A            531     DL_MS:      MOV  R6,#0AH         ;2MS延时程序,LED 显示程序用
031B 7F64            532     DL1:        MOV  R7,#64H
031D DFFE            533     DL2:        DJNZ  R7,DL2
031F DEFA            534                 DJNZ  R6,DL1
0321 22              535                 RET
                     536     
                     537     ;******************************************************
                     538     ;单字节十六进制转 BCD
                     539     ;******************************************************
0322 75F064          540     HEX2BCD1:   MOV  B,#064H
0325 84              541                 DIV  AB
0326 FF              542                 MOV  R7,A
0327 740A            543                 MOV  A,#0AH
0329 C5F0            544                 XCH  A,B
032B 84              545                 DIV  AB
032C C4              546                 SWAP  A
032D 45F0            547                 ORL  A,B
032F 22              548                 RET
                     549     ;===============================================
                     550     ;报警值 TH、TL 数据转换
                     551     ;===============================================
0330                 552     ALERT_TL:
0330 75790C          553                  MOV  79H,#0CH         ;字符"L"
0333 75780B          554                  MOV  78H,#0BH         ;字符”-“
0336 E529            555                  MOV  A,TEMP_TL
0338 7877            556                  MOV  R0,#77H
033A 75F064          557                  MOV  B,#064H
033D 84              558                  DIV  AB
033E B40103          559                  CJNE  A,#01H,ALERT_TL1
0341 F6              560                  MOV  @R0,A
0342 8003            561                  JMP  ALERT_TL2
0344 740B            562     ALERT_TL1:   MOV  A,#0BH           ;显示“-”
0346 F6              563                  MOV  @R0,A
0347 740A            564     ALERT_TL2:   MOV  A,#0AH
0349 C5F0            565                  XCH  A,B
034B 84              566                  DIV  AB
034C 18              567                  DEC  R0
034D F6              568                  MOV  @R0,A
034E F57D            569                  MOV  7DH,A
0350 18              570                  DEC  R0
0351 A6F0            571                  MOV  @R0,B
0353 85F07E          572                  MOV  7EH,B
0356 22              573                  RET
                     574     ;-----------------------------------------------
0357                 575     ALERT_TH:
0357 75790D          576                  MOV  79H,#0DH           ;字符”H“
035A 75780B          577                  MOV  78H,#0BH           ;字符”-“
035D E528            578                  MOV  A,TEMP_TH
035F 7877            579                  MOV  R0,#77H
0361 75F064          580                  MOV  B,#064H
A51 MACRO ASSEMBLER  DS18B20_温禵縚制                                                     12/20/2006 22:04:19 PAGE    10

0364 84              581                  DIV  AB
0365 B40103          582                  CJNE  A,#01H,ALERT_TH1  ;百位数不为1
0368 F6              583                  MOV  @R0,A
0369 8003            584                  JMP  ALERT_TH2
036B 740B            585     ALERT_TH1:   MOV  A,#0BH             ;显示“-”
036D F6              586                  MOV  @R0,A
036E 740A            587     ALERT_TH2:   MOV  A,#0AH
0370 C5F0            588                  XCH  A,B
0372 84              589                  DIV  AB
0373 18              590                  DEC  R0
0374 F6              591                  MOV  @R0,A
0375 F57D            592                  MOV  7DH,A
0377 18              593                  DEC  R0
0378 A6F0            594                  MOV  @R0,B
037A 85F07E          595                  MOV  7EH,B
037D 22              596                  RET
                     597     ;==========================================================
                     598     ;报警值显示子程序
                     599     ;用5位共阳数码管显示,数据在75H-77H单元内,字符在78H-79H内
                     600     ;P0口输出段码数据,P2 口作扫描控制,

⌨️ 快捷键说明

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