资源描述:
《DS18B20数字温度计汇编程序》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、TEMPLEQU40HTEMPHEQU41HTEMPHCEQU42HTEMPLCEQU43HBUF1equ44h;温度十分之一位BUF2equ45h;温度个位BUF3equ46h;温度十位BUF4equ47h;温度十位FLAG1equ48hTEMPER_LEQU50HTEMPER_HEQU51HLEDDUANequp0;LEDDUAN段扫描代码TEMPDINBITP2.3;**********************org00hljmpmainorg03hretiorg0bhretiorg13hretiorg1bhretiorg23hreti;***************
2、***********************main:movsp,#07hclramovLEDDUAN,a;LEDDUAN灭movBUF4,#0;温度百位=0movBUF3,#8;温度十位=8movBUF2,#8;温度个位=8movBUF1,#8;温度十分之一位=8;lcallDISPLAYMOVSCON,#50H;设置串行口的工作方式为方式1允许串行接收SERIALPORT=MOD1BAUD=4800MOVTMOD,#20H;T1,MODE2自动重装初值的8位定时器MOVPCON,#0;#80H;SMOD=1串行口在方式1时波特率加倍MOVTH1,#0FAH;#0F3H
3、MOVTL1,#0FAH;#0F3H;波特率=fosc/12/(256-TC)/16MOVTCON,#40H;SETBTR1STARTTR1=1SETBEA;LCALLSENDWD;ljmpmain;==================================LM:LCALLGET_TEMPERLCALLCONVTEMPLCALLDISPBCDLCALLDISPLAYLCALLSENDWDAJMPLM;===================================;DS18B20复位初始化子程序;*******************************
4、*******INIT_1820:SETBTEMPDINNOPCLRTEMPDIN;主机发出延时复位低脉冲MOVR1,#3TSR1:MOVR0,#107DJNZR0,$DJNZR1,TSR1SETBTEMPDIN;然后拉高数据线NOPNOPNOPMOVR0,#25H;延时TSR2:JNBTEMPDIN,TSR3;等待DS18B20回应DJNZR0,TSR2LJMPTSR4;DS1820不存在TSR3:SETBFLAG1;置标志位LJMPTSR5TSR4:CLRFLAG1;清标志位LJMPTSR7TSR5:MOVR0,#117TSR6:DJNZR0,TSR6TSR7:SETB
5、TEMPDINRET;****************************************;读出转换后的温度值;****************************************GET_TEMPER:SETBTEMPDINLCALLINIT_1820;复位DS18B20JBFLAG1,TSS2RET;判断DS1820是否存在TSS2:MOVA,#0CCH;跳过ROM匹配LCALLWRITE_1820MOVA,#44H;温度转换LCALLWRITE_1820;*****************************************LCALL
6、DISPLAY;*****************************************LCALLINIT_1820MOVA,#0CCHLCALLWRITE_1820MOVA,#0BEH;从RAM中读数据LCALLWRITE_1820LCALLREAD_18200RET;*******************************************;写8位数据(待写内容在A中);*******************************************WRITE_1820:MOVR2,#8CLRCSETBTEMPDINNOPNOPWR1:CLR
7、TEMPDINMOVR3,#6DJNZR3,$RRCA;把写的位放到CMOVTEMPDIN,C;C内容到总线MOVR3,#23DJNZR3,$SETBTEMPDINNOPDJNZR2,WR1SETBTEMPDINRET;*************************************;温度转换子程序二进制求补再转换成十进制并除以2得到被测温度值;*************************************CONVTEMP:MOVA,TEMPHANLA,#80HJZTEMPC1CLRCMOVA