DHT2151AM2301汇编程序教学内容.docx

上传人:b****1 文档编号:1662351 上传时间:2022-10-23 格式:DOCX 页数:30 大小:18.98KB
下载 相关 举报
DHT2151AM2301汇编程序教学内容.docx_第1页
第1页 / 共30页
DHT2151AM2301汇编程序教学内容.docx_第2页
第2页 / 共30页
DHT2151AM2301汇编程序教学内容.docx_第3页
第3页 / 共30页
DHT2151AM2301汇编程序教学内容.docx_第4页
第4页 / 共30页
DHT2151AM2301汇编程序教学内容.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

DHT2151AM2301汇编程序教学内容.docx

《DHT2151AM2301汇编程序教学内容.docx》由会员分享,可在线阅读,更多相关《DHT2151AM2301汇编程序教学内容.docx(30页珍藏版)》请在冰豆网上搜索。

DHT2151AM2301汇编程序教学内容.docx

DHT2151AM2301汇编程序教学内容

;*********************************************;

;DHT21使用范例

;单片机:

AT89S52或STC89C52RC

;功能;串口发送温湿度数据波特率9600

;硬件连接:

P2.0口为通讯口连接DHT11,DHT11的电源和地连接单片机的电源和地,单片机串口加MAX232连接电脑

;*********************************************;

;--------------------

;----变量定义区------

;--------------------

FLAGEQU30H

U8comdataEQU31H

U8T_data_HEQU32H

U8T_data_LEQU33H

U8RH_data_HEQU34H

U8RH_data_LEQU35H

U8checkdataEQU36H

U8tempEQU37H

tempEQU38H

;--------------------

;--------------------

;--------------------

org0000h

AJMPSTART

org0023h

AJMPSET_INT

START:

MOVP0,#0FFH

MOVTMOD,#20H;T1工作方式2

MOVTH1,#0FDH;串口波特率为9600

MOVSCON,#50H;串口工作于方式1并允许接受

SETBTR1;启动T1

SETBES;允许串口中断

SETBEA;允许全部外设中断

MAIN:

;---------------------------

;-----调用湿度读取子程序----

;---------------------------

LCALLRH

;---------------------------

;------串口发送程序--------

;---------------------------

TT:

MOVA,U8RH_data_H

LCALLTX_DATA

MOVA,U8RH_data_L

LCALLTX_DATA

MOVA,U8T_data_H

LCALLTX_DATA

MOVA,U8T_data_L

LCALLTX_DATA

MOVA,U8checkdata

LCALLTX_DATA

//延时两秒

LCALLDelay_2S

LJMPMAIN

;--------------------------------

;-----湿度读取子程序------------

;--------------------------------

;----以下变量均为全局变量--------

;----温度高8位==U8T_data_H------

;----温度低8位==U8T_data_L------

;----湿度高8位==U8RH_data_H-----

;----湿度低8位==U8RH_data_L-----

;----校验8位==U8checkdata-----

;----调用相关子程序如下----------

;----Read,Delay_10us,Delay

;--------------------------------

RH:

;主机拉低总线,延时500us

CLRP2.0

MOVA,#36

LCALLDelay

SETBP2.0

;延时40us

LCALLDelay_10us

LCALLDelay_10us

LCALLDelay_10us

LCALLDelay_10us

;检测从机是否响应,无响应则跳出

JBP2.0,RH_END

MOVFLAG,#0

LOOP1:

INCFLAG

MOVA,FLAG

JBP2.0,LOOP1_END;为高电平则跳出

CJNEA,#0,LOOP1

LJMPRH_END

LOOP1_END:

MOVFLAG,#0

LOOP2:

INCFLAG

MOVA,FLAG

JNBP2.0,LOOP2_END;为低电平则跳出

CJNEA,#0,LOOP2

LJMPRH_END

LOOP2_END:

;进入数据接收阶段

LCALLRead

MOVU8RH_data_H,U8comdata;

LCALLRead

MOVU8RH_data_L,U8comdata;

LCALLRead

MOVU8T_data_H,U8comdata;

LCALLRead

MOVU8T_data_L,U8comdata;

LCALLRead

MOVU8checkdata,U8comdata;

SETBP2.0

;----------------------------------------------------------------------------

;----注意:

本程序没有加校验程序如果用户需要校验请安以下说明编写校验程序-----

;----------------------------------------------------------------------------

;数据传送正确时校验和U8checkdata的值等于

;"8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据"所得结果的末8位

;-----------------------------------------------------------------------------

;-----------------------------------------------------------------------------

;-----------------------------------------------------------------------------

RH_END:

RET

;--------------------------------

;---------读数子程序-------------

;--------------------------------

Read:

MOVtemp,#8

MOVU8comdata,#0

LOOP_COM:

;判断低电平是否结束

MOVFLAG,#0

LOOP3:

INCFLAG

MOVA,FLAG

JBP2.0,LOOP3_END;为高电平则跳出

CJNEA,#0,LOOP3

LJMPCOM_END

LOOP3_END:

;----------------------

;CLRP2.1

;SETBP2.1

;----------------------

LCALLDelay_10us

LCALLDelay_10us

LCALLDelay_10us

;----------------------

;CLRP2.1

;SETBP2.1

;----------------------

MOVU8temp,#0

JNBP2.0,HIGH_END

MOVU8temp,#1

HIGH_END:

MOVFLAG,#0

LOOP4:

INCFLAG

MOVA,FLAG

JNBP2.0,LOOP4_END;为低电平则跳出

CJNEA,#0,LOOP4

LJMPCOM_END

LOOP4_END:

MOVA,FLAG

CJNEA,#0,NO_FLAG

LJMPCOM_END

NO_FLAG:

MOVA,U8comdata

RLA

ORLA,U8temp

MOVU8comdata,A

;判断高电平是否结束

DJNZtemp,LOOP_COM

COM_END:

RET

;--------------------------------

;------延时函数-----------------

;--------------------------------

Delay:

MOVR4,A;2.5ms

D1:

MOVR5,#0FFH

DJNZR5,$

DJNZR4,D1

RET

;--------------------------------

;------延时10us函数-----------------

;--------------------------------

Delay_10us:

;10us

NOP

NOP

NOP

NOP

NOP

NOP

RET

;--------------------------------

;------延时2S函数-----------------

;--------------------------------

Delay_2S:

MOVA,#250

LCALLDelay

MOVA,#250

LCALLDelay

MOVA,#250

LCALLDelay

MOVA,#250

LCALLDelay

MOVA,#250

LCALLDelay

MOVA,#250

LCALLDelay

MOVA,#250

LCALLDelay

MOVA,#250

LCALLDelay

RET

;--------------------------------

;------串口数据发送函数---------

;--------------------------------

TX_DATA:

CLRES;禁止串口中断

MOVSBUF,A

JNBTI,$

CLRTI;将同一数据发送到串口

SETBES;允许串口中断

RET

;--------------------------------

;------串口中断函数-------------

;--------------------------------

SET_INT:

CLRES;禁止串口中断

JNBRI,$

CLRRI

MOVA,SBUF;接受串口数据

MOVP0,A;将串口数据送往P0

MOVSBUF,A

JNBTI,$

CLRTI;将同一数据发送到串口

SETBES;允许串口中断

RETI

END

;--------------------------------

;----------结束------------------

;---------RSBITP3.4

RWBITP3.5

EBITP3.6

D1BITP2.0

D2BITP2.1

D3BITP2.2

IDSBITP2.4

IRWBITP2.5

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 公共行政管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1