作业帮 > 综合 > 作业

温度传感器DS18B20

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/18 02:03:46
温度传感器DS18B20
用AVR怎么读和写?
最好有示例的程序
lnlh21 - 试用期 一级 :你说那个网站资料太少,找不到我要的
温度传感器DS18B20
正好我以前写过DS18B20的程序,现在共享给你.
我的单片机频率是8M,如果你的频率不同,请自己计算后把延时参数修改一下就可以了.
DS1820温度传感器单线总线读时间片
read:push r24
in r24,SREG
push r24
ldi r22,$FF
clr r23
out PORTB,r22 ;升高单线总线
out DDRB,r22 ;B口为输出口
out PORTB,r23 ;拉低单线总线
ldi r24,$05
read1:dec r24
brne read1 ;延迟10个时钟周期(大约1.25微秒)
out DDRB,r23 ;B口为输入口
ldi r24,$30
read2:dec r24
brne read2 ;延迟96个时钟周期(大约12微秒)
in r21,PINB ;读单线总线
ldi r24,$C8
read3:dec r24
brne read3 ;延迟400个时钟周期(大约50微秒)
pop r24
out SREG,r24
pop r24
ret
DS1820温度传感器单线总线写0时间片
write0:push r24
in r24,SREG
push r24
ldi r22,$FF
clr r23
out PORTB,r22 ;升高单线总线
out DDRB,r22 ;B口为输出口
out PORTB,r23 ;拉低单线总线
clr r24
wr0j1:dec r24
dec r24
nop
nop
brne wr0j1 ;延迟640个时钟周期(大约80微秒)
out PORTB,r22 ;升高单线总线
ldi r24,$07
wr0j2:dec r24
brne wr0j2 ;延迟14个时钟周期(大约1.75微秒)
out DDRB,r23 ;B口为输入口
pop r24
out SREG,r24
pop r24
ret
DS1820温度传感器单线总线写1时间片
write1:push r24
in r24,SREG
push r24
ldi r22,$FF
clr r23
out PORTB,r22 ;升高单线总线
out DDRB,r22 ;B口为输出口
out PORTB,r23 ;拉低单线总线
ldi r24,$07
wr1j1:dec r24
brne wr1j1 ;延迟14个时钟周期(大约1.75微秒)
out PORTB,r22 ;升高单线总线
clr r24
wr1j2:dec r24
dec r24
nop
nop
brne wr1j2 ;延迟640个时钟周期(大约80微秒)
out DDRB,r23 ;B口为输入口
pop r24
out SREG,r24
pop r24
ret