全球旧事资料 分类
TEMPER_LEQU31HTEMPER_HEQU30HTEMPER_SETEQU32HFLAGEQU33HORG0000HLJMPMAINORG0030HMAINMOVR020STARTCLRP26SETBP25JNBP22SELSUBLCALLGET_TEMPERLCALLCOMPARELCALLDISPLAYLCALLKEYLJMPSTARTSELSUBMOVAR0MOVB10DIVABMOVR1AMOVR2BLCALLDISPLAYJNBP23INC0JNBP24DEC0JBP22BACKLJMPSELSUBC0MOVAR1CJNEA63HADD0MOVR100HINC1LCALLDELAY1
;用于保存读出温度低字节;用于保存读出温度高字节;用于保存设定的预期温度;是否检测到DS18B20标志位
;系统默认预期温度为20℃;点亮“实时温度”指示灯;熄灭“设定温度”指示灯;是进入温度设定;调用温度获取子程序;调用温度比较子程序;调用显示子程序;调用显示切换子程序
;温度十位存R1;温度个位存R2;显示温度
;温度加1℃;温度99℃不是则跳到ADD0?,
;延时显示
fJNBP23INC1LJMPSELSUBADD0INCR0LCALLDELAY1LJMPSELSUBDEC0MOVAR1JZSETR1DECR0DEC1LCALLDELAY1JNBP24DEC1LJMPSELSUBSETR1MOVR163HLCALLDELAY1LJMPSELSUBACKLJMPSTARTGET_TEMPERSETBP12LCALLSET_1820JBFLAGTSS2RETSS2MOVA0CCHLCALLWRITE_1820MOVA44HLCALLWRITE_1820LCALLDISPLAYLCALLSET_1820MOVA0CCHLCALLWRITE_1820MOVA0BEH
;按键松开?,松开则往下执行
;温度减1℃;温度是0℃则跳到SETR1
;按键松开?,松开则往下执行
;DS18B20初始化;检测到DS18B20跳到TSS2
;跳过ROM匹配;写DS18B20子程序;发出温度转换命令;用显示温度等待AD转换结束;跳过ROM匹配;发出读温度命令
fLCALLWRITE_1820LCALLREAD_1820MOVATEMPER_LMOVR34L1SETBCRRCADJNZR3L1MOVTEMPER_LAMOVATEMPER_HMOVR34L2SETBCRLCADJNZR3L2ANLATEMPER_LMOVR7AMOVB10DIVABMOVR1AMOVR2BRETT_1820SETBP12NOPCLRP12MOVR33低脉冲TSR1MOVR4107DJNZR4DJNZR3TSR1SETBP12NOPNOP
;读DS18B20的温度数据
;读出温度转成摄氏温度存R7
;读出的温度十位存R1;读出的温度个位存R2;DS18B20复位初始化子程序
;主机发出延时537微秒的复位
;然后拉高数据线
fNOPMOVR425HR2JNBP12TSR3DJNZR4TSR2LJMPTSR4R3SETBFLAGLJMPTSR5TSR4CLRFLAGLJMPTSR7TSR5MOVR4117TSR6DJNZR4TSR6TSR7SETBP12RETWRITE_1820MOVR38CLRCWR1CLRP12MOVR46DJNZR4RRCAMOVP12CMOVR423DJNZR4SETBP12NOPDJNZR3WR1SETBP12RET
;等待DS18B20回应;延时;置标志位,表示DS18B20存在
;清标志位,表示DS不存在
;时序要求延时一段时间
;一共8位数据
fREAD_1820MOVR48E01CLRCSETBP12NOPNOPCLRP12NOPNOPNOPSETBP12MOVR64DJNZR6MOVCP12RRCAMOVR630DJNZR6DJNZR4RE01MOVTEMPER_LAMOVR48RE02CLRCSETBP12NOPNOPCLRP12NOPNOPNOPSETBP12MOVR64DJNZR6r
好听全球资料 返回顶部