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

📄 ds18b20.lst

📁 DS18B20数据采集系统
💻 LST
📖 第 1 页 / 共 4 页
字号:
A51 MACRO ASSEMBLER  DS18B20                                                              11/15/2006 21:06:21 PAGE     1


MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN DS18B20.OBJ
ASSEMBLER INVOKED BY: E:\Keil\C51\BIN\A51.EXE DS18B20.ASM SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;********************************************************************************
                       2     ;*  标题:  伟纳电子ME300B单片机开发系统演示程序 - DS18B20温度控制1602LCD显示    *
                       3     ;*  文件:  DS18B20-LCD.asm                                                      *
                       4     ;*  日期:  2005-3-20                                                            *
                       5     ;*  版本:  1.0                                                                  *
                       6     ;*  作者:  gguoqing                                                             *
                       7     ;*  邮箱:  gguoqing@willar.com                                                  *
                       8     ;*  网站: http://www.willar.com                                                *
                       9     ;********************************************************************************
                      10     ;*  描述:                                                                       *
                      11     ;*          DS18B20温度控制1602LCD显示                                          *
                      12     ;*                                                                              *
                      13     ;*          使用方法参考readme.txt文档                                          *
                      14     ;*                                                                              *
                      15     ;*                                                                              *
                      16     ;********************************************************************************
                      17     ;* 【版权】 Copyright(C)伟纳电子 www.willar.com  All Rights Reserved            *
                      18     ;* 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息!                  *
                      19     ;********************************************************************************
                      20     
                      21      
                      22     
  0024                23               TEMP_ZH   DATA  24H     ;实时温度值存放单元
  0025                24               TEMPL     DATA  25H     ;
  0026                25               TEMPH     DATA  26H     ;
  0027                26               TEMP_TH   DATA  27H     ;高温报警值存放单元
  0028                27               TEMP_TL   DATA  28H     ;低温报警值存放单元
  0029                28               TEMPHC    DATA  29H     ;
  002A                29               TEMPLC    DATA  2AH
                      30     
  0094                31               K1     EQU  P1.4
  0095                32               K2     EQU  P1.5
  0096                33               K3     EQU  P1.6
  0097                34               K4     EQU  P1.7
                      35     
  00B7                36               BEEP      EQU  P3.7
  0093                37               RELAY     EQU  P1.3
  002F                38               LCD_X     EQU  2FH      ;LCD 地址变量
  00A0                39               LCD_RS    EQU  P2.0
  00A1                40               LCD_RW    EQU  P2.1
  00A2                41               LCD_EN    EQU  P2.2
  0000                42               flag1     equ  20H.0    ;DS18B20是否存在标记
  0001                43               KEY_UD    EQU  20H.1    ;设定 KEY 的UP与DOWN 标记
  00B3                44               date_line equ p3.3
                      45     ;=====================================================
0000                  46                ORG  0000H
0000 8000             47                JMP  MAIN
                      48     
0002 758160           49     MAIN:     MOV  SP,#60H
0005 7400             50               MOV  A,#00H
0007 7820             51               MOV  R0,#20H       ;将 20H-2FH 单元清零
0009 7910             52               MOV  R1,#10H
000B F6               53     CLEAR:    MOV  @R0,A
000C 08               54               INC  R0
000D D9FC             55               DJNZ  R1,CLEAR
                      56     
000F 9115             57               CALL  SET_LCD
0011 31EF             58               CALL  RE_18B20
A51 MACRO ASSEMBLER  DS18B20                                                              11/15/2006 21:06:21 PAGE     2

                      59     
0013 31C3             60     start:    CALL  RESET          ;18B20复位子程序
0015 300008           61               JNB   FLAG1,START1   ;DS1820不存在
0018 3161             62               CALL  MENU_OK
001A 511C             63               CALL  READ_E2
001C 314C             64               CALL  TEMP_BJ        ;显示温度标记
001E 8006             65               JMP   START2
0020 3192             66     START1:   CALL  MENU_ERROR
0022 314C             67               CALL  TEMP_BJ        ;显示温度标记
0024 80FE             68               JMP  $
                      69     
0026                  70     START2:
0026 31C3             71               CALL  RESET
0028 3000F5           72               JNB  FLAG1,START1    ;DS1820不存在
002B 74CC             73               MOV   A,#0CCH        ; 跳过ROM匹配
002D 5143             74               CALL  WRITE
002F 7444             75               MOV   A,#44H         ; 发出温度转换命令
0031 5143             76               CALL  WRITE
0033 31C3             77               CALL  RESET
0035 74CC             78               MOV   A,#0CCH        ; 跳过ROM匹配
0037 5143             79               CALL  WRITE
0039 74BE             80               MOV   A,#0BEH        ; 发出读温度命令
003B 5143             81               CALL  WRITE
003D 515B             82               CALL  READ
003F 5180             83               call CONVTEMP
0041 719B             84               Call DISPBCD
0043 71CF             85               CALL CONV
0045 3110             86               CALL TEMP_COMP
0047 114B             87               CALL  PROC_KEY       ; 键扫描
                      88     
0049 80DB             89        SJMP START2
                      90     ;-----------------------------------------------------
004B                  91     PROC_KEY:
004B 209415           92       JB  K1,PROC_K1    ; 按键K1处理
004E 91A4             93              CALL  BEEP_BL
0050 3094FD           94              JNB  K1,$
0053 900319           95              MOV  DPTR,#M_ALAX1
0056 7401             96              MOV  A,#1
0058 9148             97              CALL  LCD_PRINT
005A 51FB             98              CALL  LOOK_ALARM
005C 2096FD           99              JB  K3,$
005F 91A4            100              CALL  BEEP_BL
0061 8015            101              JMP  PROC_K2
0063                 102     PROC_K1:     ; 按键K2处理
0063 209516          103              JB  K2,PROC_END
0066 91A4            104              CALL  BEEP_BL
0068 3095FD          105              JNB  K2,$
006B 900100          106              MOV   DPTR,#RESET_A1
006E 7401            107              MOV   A,#1
0070 9148            108              CALL  LCD_PRINT
0072 117D            109              CALL  SET_ALARM
0074 31EF            110              CALL  RE_18B20           ;将设定的TH,TL值写入DS18B20内
0076 510F            111              CALL  WRITE_E2
0078                 112     PROC_K2:
0078 3161            113              CALL  MENU_OK
007A 314C            114              CALL  TEMP_BJ
007C                 115     PROC_END:
007C 22              116              RET
                     117     ;============================================
                     118     ;设定报警值 TH、TL
                     119     ;============================================
007D                 120     SET_ALARM:
                     121              ;CALL  RESET_ALARM
007D 51FB            122              CALL  LOOK_ALARM
007F                 123     AS0:
007F 209407          124              JB   K1,AS00
A51 MACRO ASSEMBLER  DS18B20                                                              11/15/2006 21:06:21 PAGE     3

0082 91A4            125              CALL  BEEP_BL
0084 3094FD          126              JNB  K1,$
0087 B201            127              CPL  20H.1            ;UP/DOWN 标记
0089 200102          128     AS00:    JB  20H.1,ASZ01       ;20H.1=1,UP
008C 8037            129              JMP  ASJ01            ;20H.1=0,DOWN
                     130     
008E 209514          131     ASZ01:   JB  K2,ASZ02          ;TH值调整(增加)
0091 91A4            132              CALL  BEEP_BL
0093 0527            133              INC  TEMP_TH
0095 E527            134              MOV  A,TEMP_TH
0097 B47803          135              CJNE  A,#120,ASZ011
009A 752700          136              MOV  TEMP_TH,#0
009D 51FB            137     ASZ011:  CALL  LOOK_ALARM
009F 7D0A            138              MOV  R5,#10
00A1 91B7            139              CALL  DELAY
00A3 80E9            140              JMP  ASZ01
                     141     
00A5 209614          142     ASZ02:   JB  K3,ASZ03          ;TL值调整(增加)
00A8 91A4            143              CALL  BEEP_BL
00AA 0528            144              INC  TEMP_TL
00AC E528            145              MOV  A,TEMP_TL
00AE B46303          146              CJNE  A,#99,ASZ021
00B1 752800          147              MOV  TEMP_TL,#00H
00B4 51FB            148     ASZ021:  CALL  LOOK_ALARM    ;
00B6 7D0A            149              MOV  R5,#10
00B8 91B7            150              CALL  DELAY
00BA 80E9            151              JMP  ASZ02
00BC 2097C0          152     ASZ03:   JB  K4,AS0          ;确定调整 OK
00BF 91A4            153              CALL  BEEP_BL
00C1 3097FD          154              JNB  K4,$
00C4 22              155              RET
                     156     
00C5                 157     ASJ01:
00C5 209513          158              JB  K2,ASJ02          ;TH值调整 (减少)
00C8 91A4            159              CALL  BEEP_BL
00CA 1527            160              DEC   TEMP_TH
00CC E527            161              MOV  A,TEMP_TH
00CE B4FF02          162              CJNE  A,#0FFH,ASJ011
00D1 801E            163              JMP  ASJ022
00D3 51FB            164     ASJ011:  CALL  LOOK_ALARM
00D5 7D0A            165              MOV  R5,#10
00D7 91B7            166              CALL  DELAY
00D9 80A4            167              JMP  AS0
                     168     
00DB 209617          169     ASJ02:   JB  K3,ASJ03         ;TL值调整(减少)
00DE 91A4            170              CALL  BEEP_BL
00E0 1528            171              DEC  TEMP_TL
00E2 E528            172              MOV  A,TEMP_TL
00E4 B4FF02          173              CJNE  A,#0FFH,ASJ021
00E7 8008            174              JMP  ASJ022
00E9 51FB            175     ASJ021:  CALL  LOOK_ALARM    ;
00EB 7D0A            176              MOV  R5,#10
00ED 91B7            177              CALL  DELAY
00EF 808E            178              JMP  AS0
00F1 B201            179     ASJ022:  CPL  20H.1
00F3 8099            180              JMP  ASZ01
00F5 80C5            181     ASJ03:   JMP  ASZ03
00F7 22              182              RET
                     183     
                     184     
00F8                 185     RESET_ALARM:
00F8 900100          186               MOV  DPTR,#RESET_A1  ;指针指到显示信息区
00FB 7401            187               MOV  A,#1            ;显示在第一行
00FD 9148            188               CALL  LCD_PRINT
00FF 22              189               RET
0100                 190     RESET_A1:
A51 MACRO ASSEMBLER  DS18B20                                                              11/15/2006 21:06:21 PAGE     4

0100 52455345        191          DB  "RESET ALERT CODE"
0104 5420414C                
0108 45525420                
010C 434F4445                
                     192     ;====================================================
                     193     ;实际温度值与标记温度值比较子程序
                     194     ;====================================================
0110                 195     TEMP_COMP:
0110 E527            196               MOV  A,TEMP_TH       
0112 9524            197               SUBB  A,TEMP_ZH       ;减数>被减数,则
0114 400E            198               JC  CHULI1            ;借位标志位C=1,转
0116 E524            199               MOV  A,TEMP_ZH
0118 9528            200               SUBB  A,TEMP_TL       ;减数>被减数,则
011A 4012            201               JC  CHULI2            ;借位标志位C=1,转
011C 90014A          202               MOV  DPTR,#BJ5
011F 3136            203               CALL  TEMP_BJ3
0121 C293            204               CLR   RELAY           ;继电器吸合
0123 22              205               RET
0124                 206      CHULI1:
0124 900146          207               MOV  DPTR,#BJ3
0127 3136            208               CALL  TEMP_BJ3
0129 D293            209               SETB  RELAY           ;继电器关闭
012B 91A4            210               CALL  BEEP_BL
012D 22              211               RET
012E                 212      CHULI2:
012E 900148          213               MOV  DPTR,#BJ4
0131 3136            214               CALL  TEMP_BJ3
0133 91A4            215               CALL  BEEP_BL
0135 22              216               RET
                     217     ;-----------------------------------------
0136                 218     TEMP_BJ3:
0136 74CE            219               MOV  A,#0CEH
0138 917B            220               CALL WCOM
013A 7900            221               MOV  R1,#0
013C 7802            222               MOV  R0,#2
                     223     
013E E9              224     BBJJ3:    MOV  A,R1
013F 93              225               MOVC A,@A+DPTR
0140 9188            226               CALL  WDATA
0142 09              227               INC R1

⌨️ 快捷键说明

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