ds18b20汇编程序与c程序
; 将从DS18B20中读出的温度数据进行转换
;//*****************************************//
TEMPER_COV:
MOVA,#0F0H
ANLA,TEMPER_L; 舍去温度低位中小数点后的四位温度数值
SWAPA
MOVTEMPER_NUM,A
MOVA,TEMPER_L
JNBACC.3,TEMPER_COV1; 四舍五入去温度值
INCTEMPER_NUM
TEMPER_COV1:
MOVA,TEMPER_H
ANLA,#07H
SWAPA
ORLA,TEMPER_NUM
MOVTEMPER_NUM,A; 保存变换后的温度数据
LCALLBIN_BCD
RET
;//*****************************************//
; 将16进制的温度数据转换成压缩BCD码
;//*****************************************//
BIN_BCD:
MOVDPTR,#TEMP_TAB
MOVA,TEMPER_NUM
MOVCA,@A+DPTR
MOVTEMPER_NUM,A
RET
TEMP_TAB:
DB00H,01H,02H,03H,04H,05H,06H,07H
DB08H,09H,10H,11H,12H,13H,14H,15H
DB16H,17H,18H,19H,20H,21H,22H,23H
DB24H,25H,26H,27H,28H,29H,30H,31H
DB32H,33H,34H,35H,36H,37H,38H,39H
DB40H,41H,42H,43H,44H,45H,46H,47H
DB48H,49H,50H,51H,52H,53H,54H,55H
DB56H,57H,58H,59H,60H,61H,62H,63H
DB64H,65H,66H,67H,68H,69H,70H
;//*****************************************//
下面还介绍一个ds18b20汇编程序
;**********************************
FLAG1 BIT F0 ;DS18B20存在标志位
DQ BIT P1.7
TEMPER_L EQU 29H
TEMPER_H EQU 28H
A_BIT EQU 35H
B_BIT EQU 36H
;************ds18b20汇编程序起始********************
ORG 0000H
AJMP MAIN
ORG 0100H
;**************主程序开始************
MAIN:
LCALL INIT_18B20
;LCALL RE_CONFIG
LCALL GET_TEMPER
AJMP CHANGE
;**********DS18B20复位程序*****************
INIT_18B20: SETB DQ
NOP
CLR DQ
MOV R0,#0FBH
TSR1: DJNZ R0,TSR1 ;延时
SETB DQ
MOV R0,#25H
TSR2: JNB DQ ,TSR3
DJNZ R0,TSR2
TSR3: SETB FLAG1 ;置标志位,表明DS18B20存在
CLR P2.0 ;二极管指示
AJMP TSR5
TSR4: CLR FLAG1
LJMP TSR7
TSR5: MOV R0,#06BH
TSR6: DJNZ R0,TSR6
TSR7:SETB DQ ;表明不存在
RET
;********************设定DS18B20暂存器设定值**************
;RE_CONFIG:
;JB FLAG1,RE_CONFIG1
;RET
;RE_CONFIG1: MOV A,#0CCH ;放跳过ROM命令
;LCALL WRITE_18B20
;MOV A,#4EH
;LCALL WRITE_18B20 ;写暂存器命令
;MOV A,#00H ;报警上限中写入00H
;LCALL WRITE_18B20
;MOV A,#00H ;报警下限中写入00H
; LCALL WRITE_18B20
- VxWorks实时操作系统下MPC8260ATM驱动的实现(11-11)
- Linux内核解读入门(11-09)
- Linux操作系统网络驱动程序编写(04-11)
- Linux系统对ISA总线DMA的实现(06-19)
- 基于MPEG-4的嵌入式多媒体监控系统中压缩/解压卡的设计与实现(10-15)
- Windows CE下驱动程序开发基础(04-10)