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

📄 51_asm_dht21.lst

📁 用51单片机控制温湿传感器dht11的程序 汇编语言编写
💻 LST
字号:
A51 MACRO ASSEMBLER  51_ASM_DHT21                                                         12/06/2008 09:01:38 PAGE     1


MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN 51_asm_DHT21.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE 51_asm_DHT21.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1        ;*********************************************;
                       2        ;            DHT21使用范例 
                       3        ;单片机 : AT89S52或 STC89C52RC
                       4        ;功能   ; 串口发送温湿度数据 波特率 9600
                       5        ;硬件连接: P2.0口为通讯口连接DHT11,DHT11的电源和地连接单片机的电源和地,单片机串口加MAX
                             232连接电脑 
                       6        ;公司   ; 广州奥松电子 
                       7        ;*********************************************;
                       8     
                       9       ;--------------------
                      10       ;----变量定义区------
                      11       ;--------------------
  0030                12       FLAG        EQU 30H
  0031                13       U8comdata   EQU 31H
  0032                14       U8T_data_H  EQU 32H
  0033                15       U8T_data_L  EQU 33H
  0034                16       U8RH_data_H EQU 34H
  0035                17       U8RH_data_L EQU 35H
  0036                18       U8checkdata EQU 36H
  0037                19       U8temp      EQU 37H
  0038                20       temp        EQU 38H
                      21       ;--------------------
                      22       ;--------------------
                      23       ;--------------------
0000                  24             org 0000h
0000 0125             25                 AJMP START
0023                  26                 org 0023h
0023 2141             27                 AJMP SET_INT
0025                  28     START:             
0025 7580FF           29                 MOV P0,#0FFH                    
0028 758920           30             MOV TMOD,#20H     ;T1工作方式2             
002B 758DFD           31             MOV TH1,#0FDH     ;串口波特率为9600               
002E 759850           32             MOV SCON,#50H     ;串口工作于方式1并允许接受                
0031 D28E             33             SETB TR1          ;启动T1                
0033 D2AC             34             SETB ES           ;允许串口中断                
0035 D2AF             35             SETB EA           ;允许全部外设中断  
0037                  36     MAIN:   
                      37     
                      38     ;---------------------------
                      39     ;-----调用湿度读取子程序----
                      40     ;---------------------------
0037 120059           41             LCALL  RH
                      42     ;---------------------------
                      43     ;------串口发送程序 --------
                      44     ;---------------------------  
003A                  45     TT:        
003A E534             46             MOV    A,U8RH_data_H
003C 120135           47                 LCALL  TX_DATA
003F E535             48                 MOV    A,U8RH_data_L
0041 120135           49                 LCALL  TX_DATA
0044 E532             50                 MOV    A,U8T_data_H
0046 120135           51                 LCALL  TX_DATA
0049 E533             52                 MOV    A,U8T_data_L
004B 120135           53                 LCALL  TX_DATA
004E E536             54                 MOV    A,U8checkdata
0050 120135           55                 LCALL  TX_DATA
                      56     
                      57             
A51 MACRO ASSEMBLER  51_ASM_DHT21                                                         12/06/2008 09:01:38 PAGE     2

0053 12010C           58             LCALL  Delay_2S
                      59     
0056 020037           60             LJMP MAIN
                      61     
                      62     
                      63     ;--------------------------------
                      64     ;-----湿度读取子程序 ------------
                      65     ;--------------------------------
                      66     ;----以下变量均为全局变量--------
                      67     ;----温度高8位== U8T_data_H------
                      68     ;----温度低8位== U8T_data_L------
                      69     ;----湿度高8位== U8RH_data_H-----
                      70     ;----湿度低8位== U8RH_data_L-----
                      71     ;----校验 8位 == U8checkdata-----
                      72     ;----调用相关子程序如下----------
                      73     ;---- Read,Delay_10us , Delay 
                      74     ;--------------------------------
0059                  75     RH:
                      76            ;主机拉低总线,延时500us 
0059 C2A0             77             CLR   P2.0  
005B 7424             78             MOV   A,#36                  
005D 1200FD           79                 LCALL Delay
0060 D2A0             80                 SETB  P2.0
                      81                ;延时40us 
0062 120105           82             LCALL Delay_10us   
0065 120105           83             LCALL Delay_10us   
0068 120105           84             LCALL Delay_10us   
006B 120105           85             LCALL Delay_10us 
                      86            ;检测从机是否响应,无响应则跳出    
006E 20A040           87             JB    P2.0,RH_END
0071 753000           88             MOV   FLAG,#0
0074                  89     LOOP1:
0074 0530             90             INC   FLAG
0076 E530             91             MOV   A,FLAG
0078 20A006           92             JB    P2.0,LOOP1_END  ;为高电平则跳出   
007B B400F6           93             CJNE  A,#0,LOOP1
007E 0200B1           94             LJMP  RH_END
0081                  95     LOOP1_END:
0081 753000           96             MOV  FLAG,#0
0084                  97     LOOP2:
0084 0530             98             INC  FLAG
0086 E530             99             MOV  A,FLAG
0088 30A006          100             JNB  P2.0,LOOP2_END  ;为低电平则跳出     
008B B400F6          101             CJNE A,#0,LOOP2
008E 0200B1          102             LJMP RH_END
0091                 103     LOOP2_END:
                     104            ;进入数据接收阶段                  
0091 1200B2          105             LCALL  Read
0094 853134          106                 MOV U8RH_data_H,U8comdata;
0097 1200B2          107                 LCALL  Read
009A 853135          108                 MOV U8RH_data_L,U8comdata;
009D 1200B2          109                 LCALL  Read
00A0 853132          110                 MOV U8T_data_H,U8comdata;
00A3 1200B2          111                 LCALL  Read
00A6 853133          112                 MOV U8T_data_L,U8comdata;
00A9 1200B2          113                 LCALL  Read
00AC 853136          114                 MOV U8checkdata,U8comdata;
00AF D2A0            115                 SETB   P2.0
                     116                ;----------------------------------------------------------------------------
                     117                ;----注意:本程序没有加校验程序 如果用户需要校验请安以下说明编写校验程序-----   
                                    
                     118                ;----------------------------------------------------------------------------
                     119                ;   数据传送正确时校验和U8checkdata的值等于  
                     120                ;  "8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据"所得结果

⌨️ 快捷键说明

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