基于单片机控制的人体健康监测系统(文献综述+流程图+源程序) 第10页

基于单片机控制的人体健康监测系统(文献综述+流程图+源程序) 第10页
3.4.2温度检测子程序:
WENDU: NOP
START:SETB P3.5;将P3.5置位
       SETB P3.5
       NOP
CCR P3.5; 主机发出537微秒的复位低脉冲
MOV R1,#3
TSR1:MOV R0,#107
DJNZ R0,$
SETB P3.5; 然后拉高数据
NOP
NOP
NOP
MOV R0,#25H
TSR2:JNB P35,TSR3;等待DS18B20回应
 DJNZ R0,TSR2
 LJMP TSR4;延时
TSR3:SETB FLAGH;置标志位,表示DS18B20存在
      CLR P1.7;检查到DS18B20就表示就点亮P17LED
      LJMP TSR5
TSR4:CLR FLAGH;清标志位,表示DS18B20不存在
      CLR P1.1
      LJMP TSR7
      TSR5:
      MOV RO,#117
TSR6:DJNZ R0,#TSR6;时序要求延时一段时间
TSR7:SETB P35
      TB FLAGH,TSS2
      CLR P1.2
TSS2:CLR P1.3;DS18B20已经被检测到
 LCALL WRITE-1820
MOV A,#44H;发出温度转换指令
LCALL WRITE-1820
LCALL DISPLAY
LCALL INIT-1820;准备读温度前先复位
MOV A,#0CCH;跳过ROM匹配
LCALL WRITE-1820
MOV A,#0BEH;    发出读温度指令
LCALL READ_1820;  将读出的温度保存到35H36H

LCALL WRITE-1820
MOV R2,#8;   一共8位数据
CLR C
  WR1:CLR P3.5
MOV R3,$
RRC A
MOV P3.5,C
MOV R3,#23
DJNZ R3,$
SETB P35
NOP
DJNZ R2,WR1
SETB P3.5
RET

READ_1820
MOV R4,#2
MOV R1,#29H
RE00:MOV R2,#8
RE01:CLR C
  SETB P3.5
NOP
NOP
CLR P3.5
NOP
NOP
NOP
SETB P3.5
MOV R3,#9
RE01:DJNZ R3,RE10
MOV C,P3.5
MOV R3,#23
RE20:DJNZ R3,RE20
RRC A
DJNZ R2,RE01
MOV @R1,A
DEC R1
DJNZ R4,RE00
RET

DISPLAY:MOV R0,#28H
MOV A,@R0
RL A
RL A
RL A
MOV R2,A
MOV R0,#29H
MOV A,@R0
SWAP A;
MOV R0,28H
XCHD A,@RO
MOV R1,#50H
MOV  A,@R1
SUBB A,#38
JNC BA0 
MOV A,@R1
SUBB A,#36
JC BAO
MOV A,@R1
DA A

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ... 下一页  >> 

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有