求个DS1820的汇编程序
答案:2 悬赏:80 手机版
解决时间 2021-03-28 04:01
- 提问者网友:饥饿走向夜
- 2021-03-27 16:51
求个DS1820的汇编程序
最佳答案
- 五星知识达人网友:罪歌
- 2021-03-27 17:42
$NOMOD51
$INCLUDE (src\main\pin.inc)
NAME DS2438
?PR?initialize?DS2438 SEGMENT CODE
?PR?_write?DS2438 SEGMENT CODE
?PR?read?DS2438 SEGMENT CODE
?PR?_function0x0BE?DS2438 SEGMENT CODE
EXTRN CODE ( ?C?CSTPTR )
PUBLIC _function0x0BE
; static void initialize( void )
RSEG ?PR?initialize?DS2438
initialize:
USING 0
SETB DQ
NOP
CLR DQ
MOV R7, #240
DJNZ R7, $
SETB DQ
MOV R7, #240
DJNZ R7, $
RET
; static void write( char x )
RSEG ?PR?_write?DS2438
_write:
USING 0
MOV R0, #8
loop1:
RRC A
CLR DQ
NOP
MOV DQ, C
MOV R7, #60
DJNZ R7, $
SETB DQ
DJNZ R0, loop1
RET
; static char read( void )
RSEG ?PR?read?DS2438
read:
USING 0
MOV R0, #8
loop2:
CLR DQ
NOP
SETB DQ
NOP
MOV R7, #6
DJNZ R7, $
MOV C, DQ
RRC A
MOV R7, #22
DJNZ R7, $
DJNZ R0, loop2
RET
; void function0x0BE( char *pc )
RSEG ?PR?_function0x0BE?DS2438
_function0x0BE:
USING 0
LCALL initialize
MOV A, #0CCH
LCALL _write
MOV A, #044H
LCALL _write
LCALL initialize
MOV A, #0CCH
LCALL _write
MOV A, #0BEH
LCALL _write
LCALL read
ANL A, #0F0H
MOV R4, A
LCALL read
ANL A, #00FH
ORL A, R4
SWAP A
;passing generic ptr in R3-R1(type/MSB/LSB)
LCALL ?C?CSTPTR
RET
END
;仅限于KEIL编译器和89C51或兼容系列单片机的DS18B20汇编程序
;我截断了温度的小数部分,觉得精度不够的话,楼主可以修改部分或全部的代码
;能给点分咩楼主~~
$INCLUDE (src\main\pin.inc)
NAME DS2438
?PR?initialize?DS2438 SEGMENT CODE
?PR?_write?DS2438 SEGMENT CODE
?PR?read?DS2438 SEGMENT CODE
?PR?_function0x0BE?DS2438 SEGMENT CODE
EXTRN CODE ( ?C?CSTPTR )
PUBLIC _function0x0BE
; static void initialize( void )
RSEG ?PR?initialize?DS2438
initialize:
USING 0
SETB DQ
NOP
CLR DQ
MOV R7, #240
DJNZ R7, $
SETB DQ
MOV R7, #240
DJNZ R7, $
RET
; static void write( char x )
RSEG ?PR?_write?DS2438
_write:
USING 0
MOV R0, #8
loop1:
RRC A
CLR DQ
NOP
MOV DQ, C
MOV R7, #60
DJNZ R7, $
SETB DQ
DJNZ R0, loop1
RET
; static char read( void )
RSEG ?PR?read?DS2438
read:
USING 0
MOV R0, #8
loop2:
CLR DQ
NOP
SETB DQ
NOP
MOV R7, #6
DJNZ R7, $
MOV C, DQ
RRC A
MOV R7, #22
DJNZ R7, $
DJNZ R0, loop2
RET
; void function0x0BE( char *pc )
RSEG ?PR?_function0x0BE?DS2438
_function0x0BE:
USING 0
LCALL initialize
MOV A, #0CCH
LCALL _write
MOV A, #044H
LCALL _write
LCALL initialize
MOV A, #0CCH
LCALL _write
MOV A, #0BEH
LCALL _write
LCALL read
ANL A, #0F0H
MOV R4, A
LCALL read
ANL A, #00FH
ORL A, R4
SWAP A
;passing generic ptr in R3-R1(type/MSB/LSB)
LCALL ?C?CSTPTR
RET
END
;仅限于KEIL编译器和89C51或兼容系列单片机的DS18B20汇编程序
;我截断了温度的小数部分,觉得精度不够的话,楼主可以修改部分或全部的代码
;能给点分咩楼主~~
全部回答
- 1楼网友:不甚了了
- 2021-03-27 18:24
这个依赖于电路结构,DS18B20本身的操作时序可参考其芯片手册。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯