DS18B20温度控制数码管显示汇编非常详细Word格式文档下载.docx

上传人:b****2 文档编号:13563948 上传时间:2022-10-11 格式:DOCX 页数:22 大小:39.96KB
下载 相关 举报
DS18B20温度控制数码管显示汇编非常详细Word格式文档下载.docx_第1页
第1页 / 共22页
DS18B20温度控制数码管显示汇编非常详细Word格式文档下载.docx_第2页
第2页 / 共22页
DS18B20温度控制数码管显示汇编非常详细Word格式文档下载.docx_第3页
第3页 / 共22页
DS18B20温度控制数码管显示汇编非常详细Word格式文档下载.docx_第4页
第4页 / 共22页
DS18B20温度控制数码管显示汇编非常详细Word格式文档下载.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

DS18B20温度控制数码管显示汇编非常详细Word格式文档下载.docx

《DS18B20温度控制数码管显示汇编非常详细Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《DS18B20温度控制数码管显示汇编非常详细Word格式文档下载.docx(22页珍藏版)》请在冰豆网上搜索。

DS18B20温度控制数码管显示汇编非常详细Word格式文档下载.docx

DATA_LINEEQUP3.3

RELAYEQUP1.3

FLAG1EQU20H.0

FLAG2EQU20H.1

-------------------------------------------------

K1EQUP1.4

K2EQUP1.5

K3EQUP1.6

K4EQUP1.7

=================================================

ORG0000H

JMPMAIN

ORG000BH

AJMPINT_T0

--------------------------------------------------

MAIN:

MOVSP,#30H

MOVTMOD,#01H;

T0,方式1

MOVTIMER_L,#00H;

50ms定时值

MOVTIMER_H,#4CH

MOVTIMER_COUN,#00H;

中断计数

MOVIE,#82H;

EA=1,ET0=1

LCALLREAD_E2

;

LCALLRE_18B20

MOV20H,#00H

转换命令

CALLWRITE

CALLRESET

MOVA,#0CCH;

跳过ROM匹配

MOVA,#0BEH;

发出读温度命令

CALLREAD;

读温度数据

CALLCONVTEMP

CALLDISPBCD

CALLDISP1

CALLSCANKEY

LCALLTEMP_COMP

JMPMAIN1

=====================================================

DS18B20复位与检测子程序

FLAG1=1OK,FLAG1=0ERROR

======================================================

RESET:

SETBDATA_LINE

NOP

CLRDATA_LINE

MOVR0,#64H;

主机发出延时600微秒的复位低脉冲

MOVR1,#03H

RESET1:

DJNZR0,$

MOVR0,#64H

DJNZR1,RESET1

SETBDATA_LINE;

然后拉高数据线

MOVR0,#25H

RESET2:

JNBDATA_LINE,RESET3;

等待DS18B20回应

DJNZR0,RESET2

JMPRESET4;

延时

RESET3:

SETBFLAG1;

置标志位,表示DS1820存在

JMPRESET5

RESET4:

CLRFLAG1;

清标志位,表示DS1820不存在

JMPRESET6

RESET5:

MOVR0,#064H

DJNZR0,$;

时序要求延时一段时间

RESET6:

RET

===========================================================

WRITE:

MOVR2,#8;

一共8位数据

CLRCY

WR1:

CLRDATA_LINE;

开始写入DS18B20总线要处于复位(低)状态

MOVR3,#09

DJNZR3,$;

总线复位保持18微妙以上

RRCA;

把一个字节DATA分成8个BIT环移给C

MOVDATA_LINE,C;

写入一个BIT

MOVR3,#23

等待46微妙

重新释放总线

DJNZR2,WR1;

写入下一个BIT

============================================================

从DS18B20中读出温度低位、高位和报警值TH、TL

存入26H、27H、28H、29H

READ:

MOVR4,#4;

将温度高位和低位从DS18B20中读出

MOVR1,#26H;

存入26H、27H、28H、29H

RE00:

MOVR2,#8

RE01:

CLRC

读前总线保持为低

开始读总线释放

MOVR3,#09;

延时18微妙

DJNZR3,$

MOVC,DATA_LINE;

从DS18B20总线读得一个BIT

把读得的位值环移给A

DJNZR2,RE01;

读下一个BIT

MOV@R1,A

INCR1

DJNZR4,RE00

RET

--------------------------------------------

200ms对闪动标记取反一次

INT_T0:

PUSHACC

PUSHPSW

MOVTL0,TIMER_L

MOVTH0,TIMER_H

INCTIMER_COUN

MOVA,TIMER_COUN

CJNEA,#04H,INT_END

MOVTIMER_COUN,#00H

CPLFLAG2

INT_END:

POPPSW

POPACC

RETI

==========================================================

重新对DS18B20初始化

将设定的温度报警值写入DS18B20

RE_18B20:

JBFLAG1,RE_18B20A

RE_18B20A:

跳过ROM匹配

LCALLWRITE

MOVA,#4EH;

写暂存寄存器

MOVA,TEMP_TH;

TH(报警上限)

MOVA,TEMP_TL;

TL(报警下限)

MOVA,#7FH;

12位精确度

====================================================

功能键扫描子程序

SCANKEY:

MOVP1,#0F0H

JBK1,SCAN_K2

CALLBEEP_BL

SCAN_K1:

CALLALERT_TL

CALLALERT_PLAY

JBK1,SCAN_K1

SCAN_K11:

CALLALERT_TH

JBK1,SCAN_K11

SCAN_K2:

JBK2,SCAN_K3

SCAN_K3:

JBK3,SCAN_K4

LCALLRESET_ALERT

LCALLRE_18B20

LCALLWRITE_E2

SCAN_K4:

JBK4,SCAN_END

SCAN_END:

================================================

设置温度报警值

RESET_ALERT:

JNBK3,$;

K3为位移键

SETBTR0

RESET_TL:

JNBFLAG2,R_TL01

mov75H,7fh;

送入熄灭符

mov76H,7fh

JMPR_TL02

R_TL01:

mov75h,7Eh;

送设定值

mov76h,7Dh

CALLALERT_PLAY;

显示设定值

R_TL02:

JNBK1,K011A

JNBK2,K011B

JNBK3,RESET_TH

JMPRESET_TL

K011A:

INCTEMP_TL

MOVA,TEMP_TL

CJNEA,#120,K012A;

没有到设定上限值,转

MOVTEMP_TL,#0

K012A:

CALLTL_DEL

K011B:

DECTEMP_TL

CJNEA,#00H,K012B;

没有到设定下限值,转

MOVTEMP_TL,#119

K012B:

-------------------------------------------------------

RESET_TH:

JNBK3,$

RESET_TH1:

JNBFLAG2,R_TH01

JMPR_TH02

R_TH01:

CALLAL

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

当前位置:首页 > 高等教育 > 院校资料

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

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