本汇编程序仅适合单个DS18B20和51单片机的连接.docVIP

  • 3
  • 0
  • 约7.55千字
  • 约 8页
  • 2016-10-08 发布于重庆
  • 举报

本汇编程序仅适合单个DS18B20和51单片机的连接.doc

本汇编程序仅适合单个DS18B20和51单片机的连接

本汇编程序仅适合单个DS18B20和51单片机的连接,晶振为12MHZ左右 DQ:DS18B20的数据总线接脚 FLAG1:标志位,为1时表示检测到DS18B20 TEMPER_NUM:保存读出的温度数据 TEMPER_LEQU36H TEMPER_HEQU35H DQBITP1.7 ; DS18B20初始化汇编程序 ;//*****************************************// INIT_1820: SETBDQ NOP CLRDQ MOVR0,#06BH TSR1: DJNZR0,TSR1; 延时 SETBDQ MOVR0,#25H TSR2: JNBDQ,TSR3 DJNZR0,TSR2 LJMPTSR4; 延时 TSR3: SETBFLAG1; 置标志位,表示DS1820存在 LJMPTSR5 TSR4: CLRFLAG1; 清标志位,表示DS1820不存在 LJMPTSR7 TSR5: MOVR0,#06BH TSR6: DJNZR0,TSR6; 延时 TSR7: SETBDQ RET ;//*****************************************// ; 重新写DS18B20暂存存储器设定值 ;//*****************************************// RE_CONFIG: JBFLAG1,RE_CONFIG1; 若DS18B20存在,转RE_CONFIG1 RET RE_CONFIG1: MOVA,#0CCH; 发SKIP ROM命令 LCALLWRITE_1820 MOVA,#4EH; 发写暂存存储器命令 LCALLWRITE_1820 MOVA,#00H; TH(报警上限)中写入00H LCALLWRITE_1820 MOVA,#00H; TL(报警下限)中写入00H LCALLWRITE_1820 MOVA,#1FH; 选择9位温度分辨率 LCALLWRITE_1820 RET ;//*****************************************// ; 读出转换后的温度值 ;//*****************************************// GET_TEMPER: SETBDQ; 定时入口 LCALLINIT_1820 JBFLAG1,TSS2 RET; 若DS18B20不存在则返回 TSS2: MOVA,#0CCH; 跳过ROM匹配 LCALLWRITE_1820 MOVA,#44H; 发出温度转换命令 LCALLWRITE_1820 LCALLINIT_1820 MOVA,#0CCH; 跳过ROM匹配 LCALLWRITE_1820 MOVA,#0BEH; 发出读温度命令 LCALLWRITE_1820 LCALLREAD_1820 MOVTEMPER_NUM,A; 将读出的温度数据保存 RET ;//*****************************************// ; 读DS18B20的程序,从DS18B20中读出一个字节的数据 ;//*****************************************// READ_1820: MOVR2,#8 RE1: CLRC SETBDQ NOP NOP CLRDQ NOP NOP NOP SETBDQ MOVR3,#7 DJNZR3,$ MOVC,DQ MOVR3,#23 DJNZR3,$ RRCA DJNZR2,RE1 RET ;//*****************************************// ; 写DS18B20的程序 ;//*****************************************// WRITE_1820: MOVR2,#8 CLRC WR1: CLRDQ MOVR3,#6 DJNZR3,$ RRCA MOVDQ,C MOVR3,#23 DJNZR3,$ SETBDQ NOP DJNZR2,WR1 SETBDQ RET ;//*****************************************// ; 读DS18B20的程序,从DS18B20中读出两个字节的温度数据 ;//*****************************************// READ_18200: MOVR4,#2; 将温度高位和低位从DS18B20中读出 MOVR1,#36H; 低位存入36H(TEMPER_L),高位存入35H(TEMPER_H) RE00: MOVR2,#8 RE01: CLRC SETBDQ NOP NOP C

文档评论(0)

1亿VIP精品文档

相关文档