DS18B20汇编程序Word文档格式.docx
- 文档编号:22495720
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:14
- 大小:16.52KB
DS18B20汇编程序Word文档格式.docx
《DS18B20汇编程序Word文档格式.docx》由会员分享,可在线阅读,更多相关《DS18B20汇编程序Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
LJMPAAA
NOP
;
------------------读出转换后的温度值
GET_TEMPER:
SETBDQ;
定时入口
BCD:
LCALLINIT_1820
JBFLAG1,S22
LJMPCC;
若DS18B20不存在则返回
S22:
LCALLDELAY1
MOVA,#0CCH;
跳过ROM匹配------0CC
LCALLWRITE_1820
MOVA,#44H;
发出温度转换命令
LCALLDELAY
CBA:
JBFLAG1,ABC
LJMPCBA
ABC:
跳过ROM匹配
MOVA,#0BEH;
发出读温度命令
LCALLREAD_18200;
READ_1820
RET
------------------读DS18B20的程序,从DS18B20中读出一个字节的数据
READ_1820:
MOVR2,#8
RE1:
CLRC
SETBDQ
CLRDQ
MOVR3,#7
DJNZR3,$
MOVC,DQ
MOVR3,#23
RRCA
DJNZR2,RE1
-------------------写DS18B20的程序
WRITE_1820:
WR1:
MOVR3,#6
MOVDQ,C
DJNZR2,WR1
-------------------读DS18B20的程序,从DS18B20中读出两个字节的温度数据
READ_18200:
MOVR4,#2;
将温度高位和低位从DS18B20中读出
MOVR1,#36H;
低位存入36H(TEMPER_L),高位存入35H(TEMPER_H)
RE00:
RE01:
DJNZR2,RE01
MOV@R1,A
DECR1
DJNZR4,RE00
-------------------将从DS18B20中读出的温度数据进行转换
TEMPER_COV:
MOVA,#0F0H
ANLA,TEMPER_L;
舍去温度低位中小数点后的四位温度数值
SWAPA
MOVTEMPER_NUM,A
MOVA,TEMPER_L
JNBACC.3,TEMPER_COV1;
四舍五入去温度值
INCTEMPER_NUM
TEMPER_COV1:
MOVA,TEMPER_H
ANLA,#07H
ORLA,TEMPER_NUM
MOVTEMPER_NUM,A;
保存变换后的温度数据
LCALLBIN_BCD
-------------------将16进制的温度数据转换成压缩BCD码
BIN_BCD:
MOVDPTR,#TEMP_TAB
MOVA,TEMPER_NUM
MOVCA,@A+DPTR
TEMP_TAB:
DB00H,01H,02H,03H,04H,05H,06H,07HDB08H,09H,10H,11H,12H,13H,14H,15HDB16H,17H,18H,19H,20H,21H,22H,23HDB24H,25H,26H,27H,28H,29H,30H,31HDB32H,33H,34H,35H,36H,37H,38H,39HDB40H,41H,42H,43H,44H,45H,46H,47HDB48H,49H,50H,51H,52H,53H,54H,55HDB56H,57H,58H,59H,60H,61H,62H,63HDB64H,65H,66H,67H,68H,69H,70H,71HDB72H,73H,74H,75H,76H,77H,78H,79HDB80H,81H,82H,83H,84H,85H,86H,87HDB88H,89H,90H,91H,92H,93H,94H,95H
DB96H,97H,98H,99H
-------------------DS18B20初始化程序
INIT_1820:
MOVR0,#80H
TSR1:
DJNZR0,TSR1;
延时
MOVR0,#25H;
96US-25H
TSR2:
DJNZR0,TSR2
JNBDQ,TSR3
LJMPTSR4;
TSR3:
SETBFLAG1;
置标志位,表示DS1820存在
LJMPTSR5
TSR4:
CLRFLAG1;
清标志位,表示DS1820不存在
LJMPTSR7
TSR5:
MOVR0,#06BH;
200US
TSR6:
DJNZR0,TSR6;
TSR7:
------------------重新写DS18B20暂存存储器设定值
RE_CONFIG:
JBFLAG1,RE_CONFIG1;
若DS18B20存在,转RE_CONFIG1
RE_CONFIG1:
发SKIPROM命令
MOVA,#4EH;
发写暂存存储器命令
MOVA,#00H;
TH(报警上限)中写入00H
TL(报警下限)中写入00H
MOVA,#7FH;
选择12位温度分辨率
------------------延时子程序
DELAY:
MOVR7,#00H
MIN:
DJNZR7,YS500
YS500:
LCALLYS500US
LJMPMIN
YS500US:
MOVR6,#00H
DJNZR6,$
DELAY1:
MOVR7,#20H
DJNZR7,$
显示子程序
display:
ACALLLCD_INT
MOVP1,#01H;
清屏
ACALLENABLE
MOVP1,#81H
LCALLENABLE
MOVP1,#'
T'
LCALLWRITER
='
LJMPDISP3
说明:
使用前,必须先对液晶显示模块进行初始化。
然后,先把
显示地址(位置)送到液晶模块的数据口,再调用"
ENABLE"
子程序把这个地址送入模块中。
之后,把要显示的字符的
ASCII码送到液晶模块的数据口,再调用"
WRITER"
子程序
把这个数据送入模块中让它显示出来。
======液晶模块初始化,一般放在程序开头=======
LCD_INT:
MOVLCD_DB,#01H;
MOVLCD_DB,#38H;
工作方式设置
MOVLCD_DB,#0CH;
显示状态设置
MOVLCD_DB,#06H;
输入方式设置
==============初始化结束=====================
*****************************************************************************
DISP3:
ANLA,#0F0H
LCALLNEX0
ANLA,#0FH
MOVP1,#2EH
LCALLWRITER
MOVDPTR,#TAB2
MOV36H,A
MOVA,36H
MOVP1,#0DFH
MOVP1,#43H
CC:
N'
O'
JMPDD
NEX0:
CJNEA,#00H,NEX1
MOVP1,#30H
LJMPNEX10
NEX1:
CJNEA,#01H,NEX2
MOVP1,#31H
NEX2:
CJNEA,#02H,NEX3
MOVP1,#32H
NEX3:
CJNEA,#03H,NEX4
MOVP1,#33H
NEX4:
CJNEA,#04H,NEX5
MOVP1,#34H
NEX5:
CJNEA,#05H,NEX6
MOVP1,#35H
NEX6:
CJNEA,#06H,NEX7
MOVP1,#36H
NEX7:
CJNEA,#07H,NEX8
MOVP1,#37H
NEX8:
CJNEA,#08H,NEX9
MOVP1,#38H
NEX9:
CJNEA,#09H,NEX11
MOVP1,#39H
NEX10:
NEX11:
===================模块的各个子程序===========================
=======RS=0,RW=0,E=1,使模块工作并准备接收控制指令===========
ENABLE:
CLRRS
CLRRW
CLRE
ACALLWAIT
SETBE
===读BF值,对模块进行任何操作前必须判断模块是否"
忙"
(BF=1);
如果不"
(BF=0)才可以进行各种操作
WAIT:
MOVLCD_DB,#0FFH
CLRRS
SETBRW
JBLCD_DB.7,WAIT
=====RS=1,RW=0,E=1,写显示数据到模块指令============
WRITER:
SETBRS
==============延时==========================
DELAY1S:
MOVR5,#01
DL4_PA:
MOVR6,#100
DL4_PB:
MOVR7,#100
DJNZR6,DL4_PB
DJNZR5,DL4_PA
===========================================
DD:
End
忘了说,
51单片机必须12M晶振
否则就要改程序了
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DS18B20 汇编程序