lcd18b20.lst

来自「用单片机实现对温度的测量」· LST 代码 · 共 229 行

LST
229
字号
A51 MACRO ASSEMBLER  LCD18B20                                                             05/03/2008 00:48:28 PAGE     1


MACRO ASSEMBLER A51 V6.23
OBJECT MODULE PLACED IN K:\JBCPU5~1\实验程序\温度试验\18B20~1\LCD18B20.OBJ
ASSEMBLER INVOKED BY: C:\COMP51\A51.EXE K:\JBCPU5~1\实验程序\温度试验\18B20~1\LCD18B20.ASM DB SB

LOC  OBJ            LINE     SOURCE

                       1     
                       2     
                       3     
                       4     
                       5     
                       6     
                       7     
                       8     
                       9     
                      10     
                      11     
                      12     
                      13     
                      14     
                      15     
                      16     
                      17     
                      18     
                      19     
                      20     
                      21     
                      22     
                      23     
                      24     
                      25     
                      26     
                      27     
                      28     
                      29     
                      30     
                      31     
                      32     
                      33     
                      34     
                      35     
                      36     
  0024                37               TEMP_ZH   DATA  24H     ;实时温度值存放单元
  0025                38               TEMPL     DATA  25H     ;
  0026                39               TEMPH     DATA  26H     ;
  0027                40               TEMP_TH   DATA  27H     ;高温报警值存放单元
  0028                41               TEMP_TL   DATA  28H     ;低温报警值存放单元
  0029                42               TEMPHC    DATA  29H     ;
  002A                43               TEMPLC    DATA  2AH
                      44     
  0094                45               K1     EQU  P1.4
  0095                46               K2     EQU  P1.5
  0096                47               K3     EQU  P1.6
  0097                48               K4     EQU  P1.7
                      49     
  00B7                50               BEEP   EQU  P3.7
  0090                51               RELAY  EQU  P1.0
  002F                52               LCD_X     EQU  2FH      ;LCD 地址变量
  00A0                53               LCD_RS    EQU  P2.0
  00A1                54               LCD_RW    EQU  P2.1
  00A2                55               LCD_EN    EQU  P2.2
  0000                56               flag1     equ  20H.0    ;DS18B20是否存在标记
  0001                57               KEY_UD    EQU  20H.1    ;设定 KEY 的UP与DOWN 标记
  00B3                58               date_line equ p3.3
A51 MACRO ASSEMBLER  LCD18B20                                                             05/03/2008 00:48:28 PAGE     2

                      59     ;=====================================================
0000                  60                ORG  0000H
0000 8000             61                JMP  MAIN
                      62     
0002 758160           63     MAIN:     MOV  SP,#60H
0005 7400             64               MOV  A,#00H
0007 7820             65               MOV  R0,#20H       ;将 20H-2FH 单元清零
0009 7910             66               MOV  R1,#10H
000B F6               67     CLEAR:    MOV  @R0,A
000C 08               68               INC  R0
000D D9FC             69               DJNZ  R1,CLEAR
                      70     
000F 9115             71               CALL  SET_LCD
0011 31EF             72               CALL  RE_18B20
                      73     
0013 31C3             74     start:    CALL  RESET          ;18B20复位子程序
0015 300008           75               JNB   FLAG1,START1   ;DS1820不存在
0018 3161             76               CALL  MENU_OK
001A 511C             77               CALL  READ_E2
001C 314C             78               CALL  TEMP_BJ        ;显示温度标记
001E 8006             79               JMP   START2
0020 3192             80     START1:   CALL  MENU_ERROR
0022 314C             81               CALL  TEMP_BJ        ;显示温度标记
0024 80FE             82               JMP  $
                      83     
0026                  84     START2:
0026 31C3             85               CALL  RESET
0028 3000F5           86               JNB  FLAG1,START1    ;DS1820不存在
002B 74CC             87               MOV   A,#0CCH        ; 跳筊OM匹配
002D 5143             88               CALL  WRITE
002F 7444             89               MOV   A,#44H         ; 发出温度转换命令
0031 5143             90               CALL  WRITE
0033 31C3             91               CALL  RESET
0035 74CC             92               MOV   A,#0CCH        ; 跳筊OM匹配
0037 5143             93               CALL  WRITE
0039 74BE             94               MOV   A,#0BEH        ; 发出读温度命令
003B 5143             95               CALL  WRITE
003D 515B             96               CALL  READ
003F 5180             97               call CONVTEMP
0041 719B             98               Call DISPBCD
0043 71CF             99               CALL CONV
0045 3110            100               CALL TEMP_COMP
0047 114B            101               CALL  PROC_KEY       ; 键扫描
                     102     
0049 80DB            103               SJMP  START2
                     104     ;-----------------------------------------------------
004B                 105     PROC_KEY:
004B 209415          106              JB  K1,PROC_K1           ; 按键K1处理
004E 91A4            107              CALL  BEEP_BL
0050 3094FD          108              JNB  K1,$
0053 900319          109              MOV  DPTR,#M_ALAX1
0056 7401            110              MOV  A,#1
0058 9148            111              CALL  LCD_PRINT
005A 51FB            112              CALL  LOOK_ALARM
005C 2096FD          113              JB  K3,$
005F 91A4            114              CALL  BEEP_BL
0061 8015            115              JMP  PROC_K2
0063                 116     PROC_K1:                          ; 按键K2处理
0063 209516          117              JB  K2,PROC_END
0066 91A4            118              CALL  BEEP_BL
0068 3095FD          119              JNB  K2,$
006B 900100          120              MOV   DPTR,#RESET_A1
006E 7401            121              MOV   A,#1
0070 9148            122              CALL  LCD_PRINT
0072 117D            123              CALL  SET_ALARM
0074 31EF            124              CALL  RE_18B20           ;将设定的TH,TL值写入DS18B20内
A51 MACRO ASSEMBLER  LCD18B20                                                             05/03/2008 00:48:28 PAGE     3

0076 510F            125              CALL  WRITE_E2
0078                 126     PROC_K2:
0078 3161            127              CALL  MENU_OK
007A 314C            128              CALL  TEMP_BJ
007C                 129     PROC_END:
007C 22              130              RET
                     131     ;============================================
                     132     ;设定报警值 TH、TL
                     133     ;============================================
007D                 134     SET_ALARM:
                     135              ;CALL  RESET_ALARM
007D 51FB            136              CALL  LOOK_ALARM
007F                 137     AS0:
007F 209407          138              JB   K1,AS00
0082 91A4            139              CALL  BEEP_BL
0084 3094FD          140              JNB  K1,$
0087 B201            141              CPL  20H.1            ;UP/DOWN 标记
0089 200102          142     AS00:    JB  20H.1,ASZ01       ;20H.1=1,UP
008C 8037            143              JMP  ASJ01            ;20H.1=0,DOWN
                     144     
008E 209514          145     ASZ01:   JB  K2,ASZ02          ;TH值调整(增加)
0091 91A4            146              CALL  BEEP_BL
0093 0527            147              INC  TEMP_TH
0095 E527            148              MOV  A,TEMP_TH
0097 B47803          149              CJNE  A,#120,ASZ011
009A 752700          150              MOV  TEMP_TH,#0
009D 51FB            151     ASZ011:  CALL  LOOK_ALARM
009F 7D0A            152              MOV  R5,#10
00A1 91B7            153              CALL  DELAY
00A3 80E9            154              JMP  ASZ01
                     155     
00A5 209614          156     ASZ02:   JB  K3,ASZ03          ;TL值调整(增加)
00A8 91A4            157              CALL  BEEP_BL
00AA 0528            158              INC  TEMP_TL
00AC E528            159              MOV  A,TEMP_TL
00AE B46303          160              CJNE  A,#99,ASZ021
00B1 752800          161              MOV  TEMP_TL,#00H
00B4 51FB            162     ASZ021:  CALL  LOOK_ALARM    ;
00B6 7D0A            163              MOV  R5,#10
00B8 91B7            164              CALL  DELAY
00BA 80E9            165              JMP  ASZ02
00BC 2097C0          166     ASZ03:   JB  K4,AS0          ;确定调整 OK
00BF 91A4            167              CALL  BEEP_BL
00C1 3097FD          168              JNB  K4,$
00C4 22              169              RET
                     170     
00C5                 171     ASJ01:
00C5 209513          172              JB  K2,ASJ02          ;TH值调整 (减少)
00C8 91A4            173              CALL  BEEP_BL
00CA 1527            174              DEC   TEMP_TH
00CC E527            175              MOV  A,TEMP_TH
00CE B4FF02          176              CJNE  A,#0FFH,ASJ011
00D1 801E            177              JMP  ASJ022
00D3 51FB            178     ASJ011:  CALL  LOOK_ALARM
00D5 7D0A            179              MOV  R5,#10
00D7 91B7            180              CALL  DELAY
00D9 80A4            181              JMP  AS0
                     182     
00DB 209617          183     ASJ02:   JB  K3,ASJ03         ;TL值调整(减少)
00DE 91A4            184              CALL  BEEP_BL
00E0 1528            185              DEC  TEMP_TL
00E2 E528            186              MOV  A,TEMP_TL
00E4 B4FF02          187              CJNE  A,#0FFH,ASJ021
00E7 8008            188              JMP  ASJ022
00E9 51FB            189     ASJ021:  CALL  LOOK_ALARM    ;
00EB 7D0A            190              MOV  R5,#10
A51 MACRO ASSEMBLER  LCD18B20                                                             05/03/2008 00:48:28 PAGE     4

00ED 91B7            191              CALL  DELAY
00EF 808E            192              JMP  AS0
00F1 B201            193     ASJ022:  CPL  20H.1
00F3 8099            194              JMP  ASZ01
00F5 80C5            195     ASJ03:   JMP  ASZ03
00F7 22              196              RET
                     197     
                     198     
00F8                 199     RESET_ALARM:
00F8 900100          200               MOV  DPTR,#RESET_A1  ;指针指到显示信息区
00FB 7401            201               MOV  A,#1            ;显示在第一行
00FD 9148            202               CALL  LCD_PRINT
00FF 22              203               RET
0100                 204     RESET_A1:
0100 52455345        205          DB  "RESET ALERT CODE"
0104 5420414C                
0108 45525420                
010C 434F4445                
                     206     ;====================================================
                     207     ;实际温度值与标记温度值比较子程序
                     208     ;====================================================
0110                 209     TEMP_COMP:
0110 E527            210               MOV  A,TEMP_TH
0112 9524            211               SUBB  A,TEMP_ZH       ;减

⌨️ 快捷键说明

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