📄 sht11_reader.txt
字号:
'microbasic pic source code
sub function sht11(dim commandbyte as byte) as word
dim wreading as word
dim crc as byte
dim tmp as byte
dim wtmp as longint
dim tmp1 as byte
SHT_TDATA=0 'data output
SHT_TCLOCK=0 'clock output
SHT_DATA=1
SHT_CLOCK=0
for tmp=0 to 8
SHT_CLOCK=1 'clock output
nop
SHT_CLOCK=0 'clock output
next tmp
nop
' generates a transmission start
' _____ ________
' DATA: |_______|
' ___ ___
' CLK : ___| |___| |______
'
SHT_DATA=1
SHT_CLOCK=0 'Initial state
nop
SHT_CLOCK=1
nop
SHT_DATA=0
nop
SHT_CLOCK=0
nop
nop
nop
SHT_CLOCK=1
nop
SHT_DATA=1
nop
SHT_CLOCK=0
nop
'send command byte
tmp1=7
for tmp=0 to 7
SHT_CLOCK=0 'clock low
if commandbyte.tmp1=1 then
SHT_DATA=1
else
SHT_DATA=0
end if
SHT_CLOCK=1 'clock high
tmp1=tmp1-1
next tmp
SHT_CLOCK=0 'clock low
'check for ack
SHT_TDATA=1 'data input
SHT_CLOCK=1 'clock high
if SHT_DATA=1 then 'ack not received
'error code
exit
end if
'wait for data ready (data=0)
SHT_CLOCK=0 'clock low
for wtmp=1 to 165535
if SHT_DATA=0 then
break
end if
next wtmp
if SHT_DATA=1 then
'data not ready after spec delay
'error code here
exit
end if
'data is ready, read in upper 8 bits
wReading=0
for tmp=0 to 7
wReading=(wReading<<1)
SHT_CLOCK=1 'clock high
if SHT_DATA=1 then
wReading.0=1
else
wReading.0=0
end if
SHT_CLOCK=0 'clock low
next tmp
'ack msb
SHT_TDATA=0 'data output
SHT_DATA=0 'data low
SHT_CLOCK=1 'toggle clock / ack
SHT_CLOCK=0 '
SHT_TDATA=1 'data input
'get lsb
for tmp=0 to 7
wReading=(wReading<<1)
SHT_CLOCK=1 'clock high
if SHT_DATA=1 then
wReading.0=1
else
wReading.0=0
end if
SHT_CLOCK=0 'clock low
next tmp
'ack lsb
SHT_TDATA=0 'data output
SHT_DATA=0 'data low
SHT_CLOCK=1 'toggle clock / ack
SHT_CLOCK=0 '
SHT_TDATA=1 'data input
'get crc - not used
for tmp=0 to 7
crc=(crc<<1)
SHT_CLOCK=1 'clock high
if SHT_DATA=1 then
crc.0=1
else
crc.0=0
end if
SHT_CLOCK=0 'clock low
next tmp
'ack crc
SHT_TDATA=0 'data output
SHT_DATA=0 'data low
SHT_CLOCK=1 'toggle clock / ack
SHT_CLOCK=0 '
SHT_TDATA=1 'data input
result=wreading
end sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -