单片机课程设计报告(一)(3)
作者:佚名; 更新时间:2017-02-02


;  一秒定时中段
; *****************************************
TOIT:   PUSH   PSW
        PUSH   ACC
        MOV   TH0,  #3CH
        MOV   TL0,  #0B0H
        INC

   MS50
        MOV   A,  MS50
        CJNE  A, #14H, RETURN
        MOV   S1OK, #1
        MOV   MS50, #00H
 RETURN:POP   ACC
        POP   PSW
        RETI


; *****************************************
;温度总子程序
; *****************************************
wendu:  ACALL   INIT_1820
        ACALL   RE_CONFIG
        ACALL   GET_TEMPER
        ACALL   TEMPER_COV
        RET
; *****************************************
;DS18B20初始化程序
; *****************************************
      INIT_1820:
      SETB P2.0
      NOP
      CLR P2.0
      MOV R0,#06BH
      MOV R1,#03H
TSR1:
      DJNZ R0,TSR1 ; 延时
      MOV R0,#6BH
      DJNZ R1,TSR1
      SETB P2.0
      NOP
      NOP
      NOP
      MOV R0,#25H
TSR2:
     JNB P2.0,TSR3
     DJNZ R0,TSR2
     LJMP TSR4 ; 延时
TSR3:
     SETB 20H.1 ; 置标志位,表示DS1820存在
     LJMP TSR5
TSR4:
     CLR  20H.1 ; 清标志位,表示DS1820不存在
     LJMP TSR7
TSR5:
     MOV R0,#06BH
     MOV R1,#03H
TSR6:DJNZ R0,TSR6 ; 延时
     MOV  R0,#6BH
     DJNZ R1,TSR6
TSR7:SETB P2.0
     RET
; *****************************************
; 重新写DS18B20暂存存储器设定值
; *****************************************
RE_CONFIG:JB 20H.1,RE_CONFIG1 ; 若DS18B20存在,转RE_CONFIG1
      RET
 RE_CONFIG1:
      MOV A,#0CCH ; 发SKIP ROM命令
      LCALL WRITE_1820
      MOV A,#4EH ; 发写暂存存储器命令
      LCALL WRITE_1820
      MOV A,#00H ; TH(报警上限)中写入00H
      LCALL WRITE_1820
      MOV A,#00H ; TL(报警下限)中写入00H
      LCALL WRITE_1820
      MOV A,#1FH ; 选择9位温度分辨率
      LCALL WRITE_1820
      RET
; *****************************************
; 读出转换后的温度值
; *****************************************
GET_TEMPER:
      SETB P2.0 ; 定时入口
      LCALL INIT_1820
&n

bsp;     JB 20H.1,TSS2
      RET ; 若DS18B20不存在则返回
TSS2:
      MOV A,#0CCH ; 跳过ROM匹配
      LCALL WRITE_1820
      MOV A,#44H ; 发出温度转换命令
      LCALL WRITE_1820
      LCALL INIT_1820
      MOV A,#0CCH ; 跳过ROM匹配
      LCALL WRITE_1820
      MOV A,#0BEH ; 发出读温度命令
      LCALL WRITE_1820

LCALL READ_18200
      MOV   37H,A ; 将读出的温度数据保存
      RET

核心期刊快速发表
Copyright@2000-2030 论文期刊网 Corporation All Rights Reserved.
《中华人民共和国信息产业部》备案号:ICP备07016076号;《公安部》备案号:33010402003207
本网站专业、正规提供职称论文发表和写作指导服务,并收录了海量免费论文和数百个经国家新闻出版总署审批过的具有国内统一CN刊号与国际标准ISSN刊号的合作期刊,供诸位正确选择和阅读参考,免费论文版权归原作者所有,谨防侵权。联系邮箱:256081@163.com