新闻  |   论坛  |   博客  |   在线研讨会
汇编的温度传感器
0750long | 2010-02-02 22:04:17    阅读:1431   发布文章

汇编的温度传感器

 

 

;============功能提要=============
;为18B20温度器进行数码管显示温度。
;本课重点、难点:18B20协议。
;=================================
LSB DATA 29H
MSB DATA 28H
YS1 DATA 30H
YS2 DATA 31H
ZS  DATA 32H
BUF DATA 33H
DQ  BIT P3.7
ORG 0000H
;----------------主程序----------------------
MAIN:    MOV SP,#80H
LOOP:    LCALL DUWEN    ;读温度程序
         LCALL ZHENGHE  ;对读出的温度进行整合
         LCALL BCD
         LCALL YHDTSM
         SJMP LOOP
;-----------------结束-----------------------
DUWEN:   ACALL FUWEI
         JB F0,CUNZHI
         RET
CUNZHI:  MOV A,#0CCH
         ACALL XIE
         MOV A,#44H
         ACALL XIE
         ACALL FUWEI
         MOV A,#0CCH
         ACALL XIE
         MOV A,#0BEH
         ACALL XIE
         ACALL DUCHU
         RET
ZHENGHE: MOV A,LSB
         MOV C,28H.0
         RRC A
         MOV C,28H.1
         RRC A
         MOV C,28H.2
         RRC A
         MOV C,28H.3
         RRC A
         MOV ZS,A
         RET
;----------显示部分---------------
BCD:     MOV A,ZS
         MOV B,#10
         DIV AB
         MOV BUF,B
         MOV B,#10
         DIV AB
         MOV BUF+1,B
         RET
YHDTSM:  MOV R5,#0
         MOV R0,#BUF
LYH1:    MOV P2,R5
         LCALL CB
         INC R5
         CJNE R0,#BUF+2,LYH1
         RET
CB:      MOV DPTR,#TABLE
         MOV A,@R0
         MOVC A,@A+DPTR
         MOV P0,A
         LCALL D5MS
         INC R0
         RET
;----------温度协议---------------
FUWEI:   CLR DQ          ;进行拉低复位
         MOV R2,#250     ;复位时间最少为480us
         DJNZ R2,$       ;实际延时500us
         SETB DQ         ;复位完后拉高
         MOV R2,#25      ;做50us等待18B20响应
LFU1:    JNB DQ,BIAOZHI  ;有回应进行18B20存在处理
         DJNZ R2,LFU1
         CLR F0
         SJMP TFU1       ;无回应返回
BIAOZHI: SETB F0
         MOV R2,#120
         DJNZ R2,$
TFU1:    SETB DQ
         RET
XIE:     MOV R3,#8       ;进行写协议
LXI1:    CLR DQ
         MOV R2,#6
         DJNZ R2,$
         RRC A
         MOV DQ,C
         MOV R2,#23
         DJNZ R2,$
         SETB DQ
         DJNZ R3,LXI1
         RET
DUCHU:   MOV R4,#2
         MOV R1,#LSB
LDU2:    MOV R3,#8
LDU1:    CLR DQ
         NOP
         SETB DQ
         MOV R2,#9
         DJNZ R2,$
         MOV C,DQ
         MOV R2,#21
         DJNZ R2,$
         RRC A
         SETB DQ
         DJNZ R3,LDU1
         MOV @R1,A
         DEC R1
         DJNZ R4,LDU2
         RET
;----------延时程序---------------
D5MS:    MOV YS1,#5
D1:      MOV YS2,#250
         DJNZ YS2,$
         DJNZ YS1,D1
         RET
TABLE:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客