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

📄 text1.lst

📁 温度、时间综合显示
💻 LST
📖 第 1 页 / 共 3 页
字号:
A51 MACRO ASSEMBLER  TEXT1                                                                05/11/2009 10:12:46 PAGE     1


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

LOC  OBJ            LINE     SOURCE

                       1     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                       2     ;;                                                                                         
                                                                                                            ;;
                       3     ;;                                 综合实验:LCD显示时间和温度                             
                                                            ;;
                       4     ;;                                                                                         
                                                                                                            ;;
                       5     ;;1302引脚定义:P2.0-----DIO    数据端                                                     
                                          ;;
                       6     ;;              P2.1-----SCLK   时钟端                                                     
                                          ;;      
                       7     ;;              P2.2-----RST    复位端                               ;;
                       8     ;;1602引脚定义:P2.5----E                                                                  
                                                                    ;;
                       9     ;;                                       P2.6----RW                                        
                                                                   ;;
                      10     ;;                                  P2.7----RS                                             
                                                           ;;
                      11     ;;                                  P0  ----数据口                                      ;;
                      12     ;;18B20引脚定义:P3.3----DQ                                         ;;
                      13     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                      14     
  0029                15                     TEMPER_L EQU 29H                        ;用于保存读出温度的低8位
  0028                16                     TEMPER_H EQU 28H                        ;用于保存读出温度的高8位
  0038                17                     FLAG1 EQU 38H                           ;是否检测到DS18B20标志位
  00B3                18                     DQ BIT P3.3 
                      19     
  00A7                20                     RS EQU P2.7       
  00A6                21                     RW EQU P2.6            
  00A5                22                     E EQU P2.5           
  0080                23                     LCD_DB EQU P0 
  007E                24                     DAT EQU 7EH                             ;用于MCU与LCD传送的数据
                      25     
                      26     
  00A0                27                     DIO EQU P2.0
  00A1                28                     SCLK EQU P2.1
  00A2                29                     RST EQU P2.2
                      30     
                      31     
0000                  32                     ORG 0000H
0000 758160           33           MOV SP,#60H  
0003 120310           34           LCALL LCDRESET
0006 120161           35                     LCALL WRITE
                      36     
                      37     
0009 12004E           38     MAIN: LCALL GET_TEMPER          ;调用读温度子程序
000C 1200B6           39                     LCALL TEMPER_COV                ;调用温度转换子程序
000F 120198           40                     LCALL READ
0012 1201AF           41                     LCALL DONE
0015 1201D7           42                     LCALL DISP                              ;调用显示子程序
0018 120389           43                     LCALL DEL200
001B 80EC             44                     SJMP MAIN
                      45     
                      46     
                      47     ; 这是DS18B20复位初始化子程序
001D                  48     INIT_1820:
001D D2B3             49                     SETB DQ
001F 00               50                     NOP
A51 MACRO ASSEMBLER  TEXT1                                                                05/11/2009 10:12:46 PAGE     2

0020 C2B3             51                     CLR DQ
                      52                                                                             
0022 7903             53                     MOV R1,#3                               ;主机发出延时537微秒的复位低脉冲
0024 786B             54     TSR1:   MOV R0,#107
0026 D8FE             55                     DJNZ R0,$
0028 D9FA             56                     DJNZ R1,TSR1
002A D2B3             57                     SETB DQ                                 ;然后拉高数据线
002C 00               58                     NOP
002D 00               59                     NOP
002E 00               60                     NOP
                      61     
002F 7825             62                     MOV R0,#25H
0031 30B305           63     TSR2:   JNB DQ,TSR3                             ;等待DS18B20回应
0034 D8FB             64                     DJNZ R0,TSR2
0036 020040           65                     LJMP TSR4                               ; 延时
0039                  66     TSR3:
0039 D238             67                     SETB FLAG1                              ; 置标志位,表示DS1820存在
003B C297             68                     CLR P1.7                                        ;检查到DS18B20就点亮P1.7LED
003D 020047           69                     LJMP TSR5
0040                  70     TSR4:
0040 C238             71                     CLR FLAG1                               ; 清标志位,表示DS1820不存在
0042 C291             72                     CLR P1.1
0044 02004B           73                     LJMP TSR7
                      74     
0047                  75     TSR5:
0047 7875             76                     MOV R0,#117
0049                  77     TSR6:
0049 D8FE             78                     DJNZ R0,TSR6                    ; 时序要求延时一段时间
004B                  79     TSR7:
004B D2B3             80                     SETB DQ
004D 22               81                     RET
                      82     
                      83     ; 读出转换后的温度值
004E                  84     GET_TEMPER:
004E D2B3             85                     SETB DQ
0050 12001D           86                     LCALL INIT_1820         ;先复位DS18B20
0053 203801           87                     JB FLAG1,TSS2
0056 22               88                     RET                                             ; 判断DS1820是否存在?若DS18
                             B20不存在则返回
                      89     
0057 74CC             90     TSS2:   MOV A,#0CCH                     ; 跳过ROM匹配
0059 120075           91                     LCALL WRITE_1820
                      92     
005C 7444             93                     MOV A,#44H                              ; 发出温度转换命令
005E 120075           94                     LCALL WRITE_1820
                      95     
0061 1200B1           96                     LCALL D1MS                              ;等待AD转换结束,12位的话750微秒
                      97     
0064 12001D           98                     LCALL INIT_1820         ;准备读温度前先复位
                      99     
0067 74CC            100                     MOV A,#0CCH                     ; 跳过ROM匹配
0069 120075          101                     LCALL WRITE_1820
                     102     
006C 74BE            103                     MOV A,#0BEH                              ; 发出读温度命令
006E 120075          104                     LCALL WRITE_1820
                     105     
0071 12008D          106                     LCALL READ_18200                ; 读出温度数据 
                     107                     
0074 22              108                     RET
                     109     
                     110     ;写DS18B20的子程序(有具体的时序要求)
0075                 111     WRITE_1820:
0075 7A08            112                     MOV R2,#8                               ;一共8位数据
0077 C3              113                     CLR C
0078 C2B3            114     WR1:    CLR DQ
007A 7B05            115                     MOV R3,#5
A51 MACRO ASSEMBLER  TEXT1                                                                05/11/2009 10:12:46 PAGE     3

007C DBFE            116                     DJNZ R3,$
007E 13              117                     RRC A
007F 92B3            118                     MOV DQ,C
0081 7B15            119                     MOV R3,#21
0083 DBFE            120                     DJNZ R3,$
0085 D2B3            121                     SETB DQ
0087 00              122                     NOP
0088 DAEE            123                     DJNZ R2,WR1
008A D2B3            124                     SETB DQ
008C 22              125                     RET
                     126     
                     127     ; 读DS18B20的程序,从DS18B20中读出两个字节的温度数据 
008D                 128     READ_18200:
008D 7C02            129                     MOV R4,#2                                       ; 将温度高位和低位从DS18B20
                             中读出
008F 7929            130                     MOV R1,#29H                             ; 低位存入29H(TEMPER_L),高位存入28H
                             (TEMPER_H)
0091                 131     RE00:
0091 7A08            132                     MOV R2,#8                                       ;数据一共有8位
0093                 133     RE01:
0093 C3              134                     CLR C
0094 D2B3            135                     SETB DQ
0096 00              136                     NOP
0097 00              137                     NOP
0098 C2B3            138                     CLR DQ
009A 00              139                     NOP
009B 00              140                     NOP
009C 00              141                     NOP
009D D2B3            142                     SETB DQ
009F 7B08            143                     MOV R3,#8
00A1 DBFE            144     RE10: DJNZ R3,RE10
00A3 A2B3            145                     MOV C,DQ
00A5 7B15            146                     MOV R3,#21
00A7 DBFE            147     RE20: DJNZ R3,RE20
00A9 13              148                     RRC A
00AA DAE7            149                     DJNZ R2,RE01
00AC F7              150                     MOV @R1,A
00AD 19              151                     DEC R1
00AE DCE1            152                     DJNZ R4,RE00
00B0 22              153                     RET
                     154     
                     155     
                     156     ;1MS延时
00B1 7F50            157     D1MS: MOV R7,#80 
00B3 DFFE            158                     DJNZ R7,$
00B5 22              159                     RET
                     160     
                     161     
                     162     
00B6                 163     TEMPER_COV:                                                     ;温度数据转换
00B6 C27F            164                     CLR 7FH
00B8 E528            165                     MOV A,28H                                       ;判断温度的正,负
00BA C4              166                     SWAP A
00BB 540F            167                     ANL A,#0FH
00BD 600D            168                     JZ QQ2
00BF E528            169                     MOV A,28H
00C1 F4              170                     CPL A
00C2 F528            171                     MOV 28H,A
00C4 E529            172                     MOV A,29H
00C6 F4              173                     CPL A
00C7 04              174                     INC A
00C8 F529            175                     MOV 29H,A
00CA D27F            176                     SETB 7FH                                        ;负温度标志
                     177     
00CC E529            178     QQ2:    MOV A,29H               
00CE 540F            179                     ANL A,#0FH
A51 MACRO ASSEMBLER  TEXT1                                                                05/11/2009 10:12:46 PAGE     4

00D0 F530            180                     MOV 30H,A                                       ;提取小数
                     181                      
00D2 E528            182                     MOV A,28H
00D4 C4              183                     SWAP A
00D5 F528            184                     MOV 28H,A
00D7 E529            185                     MOV A,29H
00D9 C4              186                     SWAP A
00DA 540F            187                     ANL A,#0FH
00DC 2528            188                     ADD A,28H
00DE F529            189                     MOV 29H,A                       ;提取整数
                     190     
00E0 1200E7          191                     LCALL XSZH
00E3 12010D          192                     LCALL HBCD
00E6 22              193                     RET
                     194     
                     195     
                     196     
                     197     
                     198     
00E7 900141          199     XSZH:   MOV DPTR,#TAB                   ;小数查表,4位BCD存放在34H,35H,36H,37H
00EA E530            200                     MOV A,30H
00EC 23              201                     RL A
00ED F5F0            202                     MOV B,A
00EF 93              203                     MOVC A,@A+DPTR
00F0 F535            204                     MOV 35H,A
00F2 E5F0            205                     MOV A,B
00F4 A3              206                     INC DPTR
00F5 93              207                     MOVC A,@A+DPTR
00F6 F537            208                     MOV 37H,A
00F8 E535            209                     MOV A,35H
00FA C4              210                     SWAP A
00FB 540F            211                     ANL A,#0FH
00FD F534            212                     MOV 34H,A
00FF 53350F          213                     ANL 35H,#0FH
0102 E537            214                     MOV A,37H
0104 C4              215                     SWAP A
0105 540F            216                     ANL A,#0FH
0107 F536            217                     MOV 36H,A
0109 53370F          218                     ANL 37H,#0FH
010C 22              219                     RET
                     220     
010D E529            221     HBCD:   MOV A,29H
010F 75F064          222           MOV B,#100
0112 84              223                     DIV AB
0113 F531            224                     MOV 31H,A                               ;31H中存放百位
0115 E5F0            225                     MOV A,B
0117 75F00A          226                     MOV B,#10
011A 84              227                     DIV AB                                  
011B F532            228                     MOV 32H,A                               ;32H中存十位
011D 85F033          229                     MOV 33H,B                               ;33H中存个位
                     230                                                     
0120 207F0F          231                     JB 7FH,HH1
0123 E531            232                     MOV A,31H
0125 700A            233                     JNZ HH2
0127 753170          234                     MOV 31H,#70H                    ;31H为0则不显示
012A E532            235                     MOV A,32H
012C 7003            236                     JNZ HH2
012E 753270          237                     MOV 32H,#70H                    ;32H为0则不显示         

⌨️ 快捷键说明

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