DS18b20 51汇编源程序.docx
- 文档编号:6652611
- 上传时间:2023-05-10
- 格式:DOCX
- 页数:26
- 大小:16.56KB
DS18b20 51汇编源程序.docx
《DS18b20 51汇编源程序.docx》由会员分享,可在线阅读,更多相关《DS18b20 51汇编源程序.docx(26页珍藏版)》请在冰点文库上搜索。
DS18b2051汇编源程序
DS18b2051汇编源程序
**********************************
FLAG1BITF0;DS18B20存在标志位
DQBITP1.7
TEMPER_LEQU29H
TEMPER_HEQU28H
A_BITEQU35H
B_BITEQU36H
;************程序起始********************
ORG0000H
AJMPMAIN
ORG0100H
;**************主程序开始************
MAIN:
LCALLINIT_18B20
;LCALLRE_CONFIG
LCALLGET_TEMPER
AJMPCHANGE
;**********DS18B20复位程序*****************
INIT_18B20:
SETBDQ
NOP
CLRDQ
MOVR0,#0FBH
TSR1:
DJNZR0,TSR1;延时
SETBDQ
MOVR0,#25H
TSR2:
JNBDQ,TSR3
DJNZR0,TSR2
TSR3:
SETBFLAG1;置标志位,表明DS18B20存在
CLRP2.0;二极管指示
AJMPTSR5
TSR4:
CLRFLAG1
LJMPTSR7
TSR5:
MOVR0,#06BH
TSR6:
DJNZR0,TSR6
TSR7:
SETBDQ;表明不存在
RET
;********************设定DS18B20暂存器设定值**************
;RE_CONFIG:
;JBFLAG1,RE_CONFIG1
;RET
;RE_CONFIG1:
MOVA,#0CCH;放跳过ROM命令
;LCALLWRITE_18B20
;MOVA,#4EH
;LCALLWRITE_18B20;写暂存器命令
;MOVA,#00H;报警上限中写入00H
;LCALLWRITE_18B20
;MOVA,#00H;报警下限中写入00H
;LCALLWRITE_18B20
;MOVA,#1FH;选择九位温度分辨率
;LCALLWRITE_18B20
;RET
;*****************读转换后的温度值****************
GET_TEMPER:
SETBDQ
LCALLINIT_18B20
JBFLAG1,TSS2
RET;若不存在则返回
TSS2:
MOVA,#0CCH;跳过ROM
LCALLWRITE_18B20
MOVA,#44H;发出温度转换命令
LCALLWRITE_18B20
LCALLDISPLAY;延时
LCALLINIT_18B20
MOVA,#0CCH;跳过ROM
LCALLWRITE_18B20
MOVA,#0BEH;发出读温度换命令
LCALLWRITE_18B20
LCALLREAD2_18B20;读两个字节的温度
RET
;***************写DS18B20程序************
WRITE_18B20:
MOVR2,#8
CLRC
WR1:
CLRDQ
MOVR3,#6
DJNZR3,$
RRCA
MOVDQ,C
MOVR3,#23
DJNZR3,$
SETBDQ
NOP
DJNZR2,WR1
SETBDQ
RET
;***********读18B20程序,读出两个字节的温度*********
READ2_18B20:
MOVR4,#2;低位存在29H,高位存在28H
MOVR1,#29H
RE00:
MOVR2,#8
RE01:
CLRC
SETBC
NOP
NOP
CLRDQ
NOP
NOP
NOP
SETBDQ
MOVR3,#7
DJNZR3,$
MOVC,DQ
MOVR3,#23
DJNZR3,$
RRCA
DJNZR2,RE01
MOV@R1,A
DECR1
DJNZR4,RE00
RET
;************读出的温度进行数据转换**************
CHANGE:
MOVA,29H
MOVC,28H.0;将28H中的最低位移入C
RRCA
MOVC,28H.1
RRCA
MOVC,28H.2
RRCA
MOVC,28H.3
RRCA
MOV29H,A
;setbp2.0
LCALLDISPLAY;调用数码管显示子程序
;setbP2.0
LJMPMAIN
;*******************DISPLAY******
DISPLAY:
mova,29H;将29H中的十六进制数转换成10进制
movb,#10;10进制/10=10进制
divab
movb_bit,a;十位在a
mova_bit,b;个位在b
movdptr,#TAB;指定查表启始地址
movr0,#4
dpl1:
movr1,#250;显示1000次
dplop:
mova,a_bit;取个位数
MOVCA,@A+DPTR;查个位数的7段代码
movp0,a;送出个位的7段代码
clrp2.5;开个位显示
acalld1ms;显示1ms
setbp2.5
mova,b_bit;取十位数
MOVCA,@A+DPTR;查十位数的7段代码
movp0,a;送出十位的7段代码
clrp2.4;开十位显示
acalld1ms;显示1ms
setbp2.4
djnzr1,dplop;100次没完循环
djnzr0,dpl1;4个100次没完循环
ret
;***********************************
D1MS:
MOVR7,#80;1MS延时(按12MHZ算)
DJNZR7,$
RET
;*************************
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DS18b20 51汇编源程序 51 汇编 源程序