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

📄 ds18b20-lcd1602-温度控制.lst

📁 基于51的DS18B20_1Wire温度控制等C,ASM源程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
A51 MACRO ASSEMBLER  DS18B20_LCD1602_温禵縚制                                             12/20/2006 22:01:59 PAGE     1


MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN DS18B20-LCD1602-温度控制.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE DS18B20-LCD1602-温度控制.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;*******************************************************************
                       2     ;*                                                                 *
                       3     ;* ME500单片机开发系统演示程序 - DS18B20温度控制程序               *
                       4     ;*                                                                 *
                       5     ;* LCD1602显示                                                     *
                       6     ;*                                                                 *
                       7     ;* 版本: V1.0 (2006/11/20)                                        *
                       8     ;* 作者: gguoqing (Email: gguoqing@willar.com)                    *
                       9     ;* 网站: www.willar.com(伟纳电子)   www.mcusj.com(伟纳单片机世界) *
                      10     ;* 时间: 2005/03/15                                               *
                      11     ;*                                                                 *
                      12     ;*【版权】Copyright(C)伟纳电子 www.willar.com All Rights Reserved  *
                      13     ;*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!       *
                      14     ;*                                                                 *
                      15     ;*******************************************************************
                      16     
  0024                17               TEMP_ZH   DATA  24H     ;实时温度值存放单元
  0025                18               TEMPL     DATA  25H     ;温度低位值存放单元
  0026                19               TEMPH     DATA  26H     ;温度高位值存放单元
  0027                20               TEMP_TH   DATA  27H     ;高温报警值存放单元
  0028                21               TEMP_TL   DATA  28H     ;低温报警值存放单元
                      22     
                      23     ;-----------------------------------------------------------
  0030                24               T0_CONU   DATA  30H     ;中断计数单元
  0031                25               TIME_L    DATA  31H     ;中断定时常数 TL0
  0032                26               TIME_H    DATA  32H     ;中断定时常数 TH0
                      27     ;-----------------------------------------------------------
  0094                28               K1        EQU   P1.4    ;独立键
  0095                29               K2        EQU   P1.5
  0096                30               K3        EQU   P1.6
  0097                31               K4        EQU   P1.7
                      32     ;-----------------------------------------------------------
  00B3                33               DATE_LINE EQU   P3.3     ;DS18B20 数据线
  00B7                34               BEEP      EQU   P3.7     ;蜂鸣器控制线
  0093                35               RELAY     EQU   P1.3     ;继电器控制线
                      36     ;-----------------------------------------------------------
  002F                37               LCD_X     EQU   2FH      ;LCD 地址变量
  00A0                38               LCD_RS    EQU   P2.0     ;LCD 数据/命令选择端
  00A1                39               LCD_RW    EQU   P2.1     ;LCD 读/写选择端
  00A2                40               LCD_EN    EQU   P2.2     ;LCD 使能信号
                      41     ;-----------------------------------------------------------
  0000                42               FLAG1     BIT  20H.0     ;DS18B20是否存在标志
  0001                43               KEY_UD    BIT  20H.1     ;设定 KEY 的UP与DOWN 标志
  0002                44               FLAG2     BIT  20H.2     ;闪烁标志
  0003                45               FLAG3     BIT  20H.3     ;温度正负标志
  0004                46               FLAG4     BIT  20H.4     ;蜂鸣器静音标志
                      47     ;===========================================================
0000                  48                ORG  0000H
0000 802E             49                JMP  MAIN
000B                  50                ORG  000BH
000B 806C             51                JMP  INT_T0
0030                  52                ORG  0030H
                      53     ;===========================================================
0030 758160           54     MAIN:     MOV  SP,#60H
0033 7400             55               MOV  A,#00H
0035 7820             56               MOV  R0,#20H         ;将 20H-2FH 单元清零
0037 7910             57               MOV  R1,#10H
0039 F6               58     CLEAR:    MOV  @R0,A
A51 MACRO ASSEMBLER  DS18B20_LCD1602_温禵縚制                                             12/20/2006 22:01:59 PAGE     2

003A 08               59               INC  R0
003B D9FC             60               DJNZ  R1,CLEAR
                      61     
003D 758901           62               MOV  TMOD,#01H       ;T0,方式1
0040 753100           63               MOV  TIME_L,#00H     ;50ms定时值
0043 75324C           64               MOV  TIME_H,#4CH
0046 753000           65               MOV  T0_CONU,#00H    ;中断计数
0049 75A882           66               MOV  IE,#82H         ;EA=1,ET0=1
004C D28C             67               SETB  TR0
004E 91AE             68               CALL  SET_LCD        ;初始化 LCD 1602
0050                  69     START:
0050 5171             70               CALL  RESET          ;18B20复位子程序
0052 300006           71               JNB   FLAG1,START1   ;DS1820不存在
0055 510F             72               CALL  MENU_OK        ;
0057 31FA             73               CALL  TEMP_BJ        ;显示温度标记
0059 800D             74               JMP   START3
005B                  75     START1:
005B 5140             76               CALL  MENU_ERROR     ;
005D C28C             77               CLR  TR0
005F                  78     START2:
005F 5171             79               CALL  RESET          ;18B20复位子程序
0061 2000EC           80               JB   FLAG1,START
0064 B123             81               CALL  BEEP_BL        ;DS1820不正常时,报警。
0066 80F7             82               JMP  START2
                      83     
                      84     ;-----------------------------------------------------------
0068                  85     START3:
0068 5171             86               CALL  RESET          ;DS18B20 复位与检测
006A 3000EE           87               JNB  FLAG1,START1    ;DS1820不存在
006D 7109             88               CALL  READ_TEMP      ;读出温度与报警数据
006F 7144             89               CALL CONVTEMP
0071 3185             90               CALL TEMP_COMP       ;温度比较子程序
0073 9135             91               CALL CONV
0075 1194             92               CALL  PROC_KEY       ;键功能扫描
0077 80EF             93               SJMP  START3
                      94     ;-----------------------------------------------
                      95     ;T0,50ms中断子程序
                      96     ;500ms对闪动标记 20H.2 取反一次
                      97     ;-----------------------------------------------
0079                  98     INT_T0:
0079 C0E0             99               PUSH  ACC              ;入栈保护
007B C0D0            100               PUSH  PSW
007D 85318A          101               MOV  TL0,TIME_L        ;重装定时值
0080 85328C          102               MOV  TH0,TIME_H        ;
0083 0530            103               INC  T0_CONU           ;中断次数加1
0085 E530            104               MOV  A,T0_CONU
0087 B40A05          105               CJNE  A,#0AH,INT_END   ;500ms 是否到?
008A 753000          106               MOV  T0_CONU,#00H
008D B202            107               CPL  20H.2             ;闪动标记取反
008F                 108     INT_END:
008F D0D0            109               POP  PSW               ;出栈
0091 D0E0            110               POP  ACC
0093 32              111               RETI
                     112     ;-------------------------------------------------
                     113     ;按键功能处理子程序
                     114     ;K1: 查看报警值, K3: 退出查看状态
                     115     ;K2: 设定报警值
                     116     ;-------------------------------------------------
0094                 117     PROC_KEY:
0094 209415          118              JB  K1,PROC_K1            ; 按键K1处理
0097 B123            119              CALL  BEEP_BL             ;蜂鸣器响一声
0099 3094FD          120              JNB  K1,$                 ;等待 K1 释放
009C 9000D0          121              MOV  DPTR,#M_ALAX1
009F 7401            122              MOV  A,#1
00A1 91D4            123              CALL  LCD_PRINT
00A3 719F            124              CALL  LOOK_ALARM          ;查看报警值
A51 MACRO ASSEMBLER  DS18B20_LCD1602_温禵縚制                                             12/20/2006 22:01:59 PAGE     3

00A5 2096FD          125              JB  K3,$                  ;等待 K3 键按下
00A8 B123            126              CALL  BEEP_BL
00AA 8015            127              JMP  PROC_K2
00AC                 128     PROC_K1:                          ; 按键K2处理
00AC 209516          129              JB  K2,PROC_K4
00AF B123            130              CALL  BEEP_BL            ;蜂鸣器响一声
00B1 3095FD          131              JNB  K2,$                ;等待 K2 释放
00B4 9000E1          132              MOV   DPTR,#RESET_A1
00B7 7401            133              MOV   A,#1
00B9 91D4            134              CALL  LCD_PRINT
00BB 11F2            135              CALL  SET_ALARM          ;设定报警值
00BD 519D            136              CALL  RE_18B20           ;将设定的TH,TL值写入DS18B20内
00BF 51BD            137              CALL  WRITE_E2           ;温度报警值拷贝到EEROM
00C1                 138     PROC_K2:
00C1 510F            139              CALL  MENU_OK
00C3 31FA            140              CALL  TEMP_BJ
00C5                 141     PROC_K4:
00C5 209707          142              JB  K4,PROC_END          ;按键K4处理
00C8 B123            143              CALL  BEEP_BL            ;蜂鸣器响一声
00CA 3097FD          144              JNB  K4,$                ;等待 K4 释放
00CD B204            145              CPL  FLAG4
00CF                 146     PROC_END:
00CF 22              147              RET
                     148     ;---------------------------------------------
00D0                 149     M_ALAX1:
00D0 204C4F4F        150          DB   " LOOK ALERT CODE",0
00D4 4B20414C                
00D8 45525420                
00DC 434F4445                
00E0 00                      
00E1                 151     RESET_A1:
00E1 52455345        152          DB   "RESET ALERT CODE",0
00E5 5420414C                
00E9 45525420                
00ED 434F4445                
00F1 00                      
                     153     ;============================================
                     154     ;设定报警值 TH、TL
                     155     ;K1: 选择 UP/DOWN 方式
                     156     ;K2: 设定 TH 值,K3: 设定 TL 值
                     157     ;K4: 确定与退出
                     158     ;============================================
00F2                 159     SET_ALARM:
00F2 719F            160              CALL  LOOK_ALARM
00F4                 161     AS0:
00F4 209407          162              JB   K1,AS00
00F7 B123            163              CALL  BEEP_BL
00F9 3094FD          164              JNB  K1,$
00FC B201            165              CPL  20H.1            ;UP/DOWN 标记
00FE 200102          166     AS00:    JB  20H.1,ASZ01       ;20H.1=1,UP
0101 8037            167              JMP  ASJ01            ;20H.1=0,DOWN
                     168     
0103 209514          169     ASZ01:   JB  K2,ASZ02          ;TH值调整(增加)
0106 B123            170              CALL  BEEP_BL
0108 0527            171              INC  TEMP_TH
010A E527            172              MOV  A,TEMP_TH
010C B47803          173              CJNE  A,#120,ASZ011   ;没有到设定上限值,转
010F 752700          174              MOV  TEMP_TH,#0
0112 719F            175     ASZ011:  CALL  LOOK_ALARM      ;显示设定值
0114 7D0A            176              MOV  R5,#10           ;
0116 B136            177              CALL  DELAY
0118 80E9            178              JMP  ASZ01
                     179     
011A 209614          180     ASZ02:   JB  K3,ASZ03          ;TL值调整(增加)
011D B123            181              CALL  BEEP_BL
011F 0528            182              INC  TEMP_TL
A51 MACRO ASSEMBLER  DS18B20_LCD1602_温禵縚制                                             12/20/2006 22:01:59 PAGE     4

0121 E528            183              MOV  A,TEMP_TL
0123 B46303          184              CJNE  A,#99,ASZ021    ;没有到设定上限值,转
0126 752800          185              MOV  TEMP_TL,#00H
0129 719F            186     ASZ021:  CALL  LOOK_ALARM      ;显示设定值
012B 7D0A            187              MOV  R5,#10
012D B136            188              CALL  DELAY
012F 80E9            189              JMP  ASZ02
0131 2097C0          190     ASZ03:   JB  K4,AS0            ;确定调整 OK
0134 B123            191              CALL  BEEP_BL
0136 3097FD          192              JNB  K4,$
0139 22              193              RET
                     194     

⌨️ 快捷键说明

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