📄 ds18b20.asm
字号:
*************************************************
*FILE: Ds18b20.ASM
*日期:2005年9月28日*
*************************************************
****************18B20串口通信********************
.def DS_18B20
************************************************
.include "lf2407a.H"
************************************************
.bss DS_DARW,1
.bss DS_COUNT,1
.bss TMPT_W,1
.bss TMPT_N,1
.bss TMPT_R,1
.bss TMPT_CT,1
.bss TMPT_ZH,1
.bss TMPT1,1
.bss TMPT2,1
.bss TMPT3,1
.bss TMPT4,1
.bss TMPT5,1
.bss CRCTEMP,1
.bss TMPE0,1
.bss TMPE1,1
.bss TMPE2,1
.bss TMPE3,1
.bss TMPE4,1
.bss TMPE5,1
.bss TMPE6,1
.bss TMPE7,1
.bss TMPE8,1
.bss TMPE9,1
.bss TMPE10,1
************************************************
.text
*************************************************
DS_18B20:
LDP #5
LACL DS_DARW
BCND SUB_COUNT,GT
LACC DS_COUNT,1
ADD #REST_X
BACC
REST_X:
B REST_0 ;REST_COUNT=0
B REST_1 ;REST_COUNT=1
B REST_2 ;REST_COUNT=2
B REST_3 ;REST_COUNT=3
B REST_4
B REST_5
B REST_6
B REST_7
B REST_8
B REST_9
B REST_10
B REST_11
B REST_12
B REST_13
B REST_14
B REST_15
B REST_16
B REST_17
B REST_18
B REST_19
B REST_20
B REST_21
B REST_22
B REST_23
B REST_24
B REST_25
B REST_26
B REST_27
B REST_28
SUB_COUNT:
LDP #5
LACL DS_DARW
SUB #1
SACL DS_DARW
END:
RET
REST_0:
SBIT1 PFDATDIR,B9_MSK ;SET OUT
SBIT1 PFDATDIR,B1_MSK ;PF1=1
NOP
NOP
SBIT0 PFDATDIR,B1_MSK ;PF1=0
LDP #5
SPLK #1,DS_COUNT
SPLK #45,DS_DARW ;#80
RET
REST_1:
SBIT0 PFDATDIR,B9_MSK ;SET IN
SBIT1 PFDATDIR,B1_MSK ;PF1=1
LDP #5
SPLK #2,DS_COUNT
SPLK #5,DS_DARW ;#10
RET
REST_2:
LDP #225
BIT PFDATDIR,15-1
BCND REST_2_0,NTC
LDP #5
SPLK #65000,DS_DARW
SPLK #0,DS_COUNT
LDP #7
SPLK #99,DAT6
RET
REST_2_0:
LDP #5
SPLK #3,DS_COUNT
SPLK #45,DS_DARW ;#50
RET
REST_3:
LDP #5
LACL TMPT_CT
BCND REST_3_0,NEQ
SPLK #4,DS_COUNT
SPLK #044CCH,TMPT_W
SPLK #16,TMPT_N
SBIT1 PFDATDIR,B9_MSK ;设置IOPF1为输出口
SBIT1 PFDATDIR,B1_MSK ;PF1=1
RET
REST_3_0
LDP #5
SPLK #6,DS_COUNT
RET
REST_4:
SBIT1 PFDATDIR,B1_MSK ;PF1=1
SBIT0 PFDATDIR,B1_MSK ;PF1=0
LDP #5
LACC TMPT_W
SFR
SACL TMPT_W ;
BCND REST_4_0,C
SBIT0 PFDATDIR,B1_MSK ;PF1=0
B REST_4_1
REST_4_0:
SBIT1 PFDATDIR,B1_MSK ;PF1=1
REST_4_1:
LDP #5
LACC TMPT_N
SUB #1
SACL TMPT_N
BCND REST_4_2,GT
SPLK #5,DS_COUNT
SPLK #1,TMPT_CT
SPLK #6,DS_DARW
RET
REST_4_2:
LDP #5
SPLK #6,DS_DARW ;#3
SPLK #12,DS_COUNT
SPLK #4,TMPT_ZH
RET
REST_5:
SBIT1 PFDATDIR,B1_MSK ;PF6=1
LDP #5
SPLK #14,DS_COUNT
SPLK #25000,DS_DARW
RET
REST_6:
LDP #5
SPLK #7,DS_COUNT
SPLK #0BECCH,TMPT_W
SPLK #16,TMPT_N
SPLK #5,TMPE0
SBIT1 PFDATDIR,B9_MSK ;设置IOPF1为输出口
SBIT1 PFDATDIR,B1_MSK ;PF1=1
LAR AR3,#TMPT1
RET
REST_7:
SBIT1 PFDATDIR,B1_MSK ;PF1=1
SBIT0 PFDATDIR,B1_MSK ;PF1=0
LDP #5
LACC TMPT_W
SFR
SACL TMPT_W ;
BCND REST_7_0,C
SBIT0 PFDATDIR,B1_MSK ;PF1=0
B REST_7_1
REST_7_0:
SBIT1 PFDATDIR,B1_MSK ;PF1=1
REST_7_1:
LDP #5
LACC TMPT_N
SUB #1
SACL TMPT_N
BCND REST_7_2,GT
SPLK #6,DS_DARW
SPLK #12,DS_COUNT
SPLK #8,TMPT_ZH
RET
REST_7_2:
LDP #5
SPLK #6,DS_DARW ;#3
SPLK #12,DS_COUNT
SPLK #7,TMPT_ZH
RET
REST_8:
SBIT0 PFDATDIR,B1_MSK ;PF1=0
LDP #5
SPLK #10,DS_COUNT
SPLK #0,TMPT_R
SPLK #16,TMPT_N
SBIT0 PFDATDIR,B9_MSK ;SET IN
SBIT1 PFDATDIR,B1_MSK ;PF1=1
RET
REST_9:
LDP #5
LACC TMPT_R
SFR
SACL TMPT_R
SPLK #10,DS_COUNT
SBIT0 PFDATDIR,B9_MSK ;SET IN
SBIT1 PFDATDIR,B1_MSK ;PF1=1
RET
REST_10:
LDP #225
LACC PFDATDIR,14
AND #08000H
LDP #5
OR TMPT_R
SACL TMPT_R
SPLK #11,DS_COUNT
LACL TMPT_N
SUB #1
SACL TMPT_N
SPLK #6,DS_DARW
SBIT1 PFDATDIR,B9_MSK ;OUT
SBIT1 PFDATDIR,B1_MSK ;PF1=1
RET
REST_11:
LDP #5
LACL TMPT_N
BCND REST_11_0,GT
LACL TMPE0
SUB #1
SACL TMPE0
BCND REST_11_1,GT
SPLK #13,DS_COUNT
LACL TMPT1
SACL DATT4L
LACL TMPT_R
MAR *,AR3
SACL *
RET
REST_11_0:
LDP #5
SPLK #9,DS_COUNT
SBIT0 PFDATDIR,B1_MSK ;PF1=0
RET
REST_11_1:
LDP #5
LACL TMPT_R
MAR *,AR3
SACL *+
SPLK #8,DS_COUNT
SBIT0 PFDATDIR,B1_MSK ;PF1=0
RET
REST_12:
LDP #5
LACL TMPT_ZH
SACL DS_COUNT
SBIT1 PFDATDIR,B1_MSK ;PF1=1
RET
REST_13: ;REST_COUNT=13
LDP #5
SPLK #15,DS_COUNT
RET
REST_14: ;REST_COUNT=13
LDP #5
LACL #0
SACL DS_COUNT
SPLK #50000,DS_DARW
RET
REST_15:
LDP #5
LACL DS_COUNT
ADD #1
SACL DS_COUNT
ZAC
LACC TMPT1,8
SACH TMPE2
LACL TMPT1
AND #0FFH
SACL TMPE1
RET
REST_16:
LDP #5
LACL DS_COUNT
ADD #1
SACL DS_COUNT
ZAC
LACC TMPT2,8
SACH TMPE4
LACL TMPT2
AND #0FFH
SACL TMPE3
RET
REST_17:
LDP #5
LACL DS_COUNT
ADD #1
SACL DS_COUNT
ZAC
LACC TMPT3,8
SACH TMPE6
LACL TMPT3
AND #0FFH
SACL TMPE5
RET
REST_18:
LDP #5
LACL DS_COUNT
ADD #1
SACL DS_COUNT
ZAC
LACC TMPT4,8
SACH TMPE8
LACL TMPT4
AND #0FFH
SACL TMPE7
LACL TMPT5
AND #0FFH
SACL TMPE9
RET
REST_19:
LDP #5
LACL DS_COUNT
ADD #1
SACL DS_COUNT
LACL #0
XOR TMPE1
SACL CRCTEMP
LACC #DS1820_CRC
ADD CRCTEMP
TBLR TMPE10
RET
REST_20:
LDP #5
LACL DS_COUNT
ADD #1
SACL DS_COUNT
LACL TMPE2
XOR TMPE10
SACL CRCTEMP
LACC #DS1820_CRC
ADD CRCTEMP
TBLR TMPE10
RET
REST_21:
LDP #5
LACL DS_COUNT
ADD #1
SACL DS_COUNT
LACL TMPE3
XOR TMPE10
SACL CRCTEMP
LACC #DS1820_CRC
ADD CRCTEMP
TBLR TMPE10
RET
REST_22:
LDP #5
LACL DS_COUNT
ADD #1
SACL DS_COUNT
LACL TMPE4
XOR TMPE10
SACL CRCTEMP
LACC #DS1820_CRC
ADD CRCTEMP
TBLR TMPE10
RET
REST_23:
LDP #5
LACL DS_COUNT
ADD #1
SACL DS_COUNT
LACL TMPE5
XOR TMPE10
SACL CRCTEMP
LACC #DS1820_CRC
ADD CRCTEMP
TBLR TMPE10
RET
REST_24:
LDP #5
LACL DS_COUNT
ADD #1
SACL DS_COUNT
LACL TMPE6
XOR TMPE10
SACL CRCTEMP
LACC #DS1820_CRC
ADD CRCTEMP
TBLR TMPE10
RET
REST_25:
LDP #5
LACL DS_COUNT
ADD #1
SACL DS_COUNT
LACL TMPE7
XOR TMPE10
SACL CRCTEMP
LACC #DS1820_CRC
ADD CRCTEMP
TBLR TMPE10
RET
REST_26:
LDP #5
LACL DS_COUNT
ADD #1
SACL DS_COUNT
LACL TMPE8
XOR TMPE10
SACL CRCTEMP
LACC #DS1820_CRC
ADD CRCTEMP
TBLR TMPE10
RET
REST_27:
LDP #5
LACL DS_COUNT
ADD #1
SACL DS_COUNT
LACL TMPE9
XOR TMPE10
SACL CRCTEMP
LACL CRCTEMP
BCND CRC_END,NEQ
SPLK #6688,TMPE10
RET
CRC_END:
SPLK #0,TMPE10
RET
********************************************
*********************************************
REST_28:
LDP #5
SPLK #0,DS_COUNT
LACL TMPE10
BCND rd2,EQ
SPLK #0,TMPT_CT
LACL DATT4L
and #0f800h
bcnd rd0,eq
SPLK #1,SETFU
lacc DATT4L
cmpl
add #1
sacl DATT4L
B rd1
rd0: SPLK #0,SETFU
rd1:
LACC DATT4L,12
LDP #7
SACH DAT6
rd2:
RET
***********************************************************
*********************************************************************************
DS1820_CRC:
.word 0, 94,188,226, 97, 63,221,131,194,156,126, 32,163,253, 31, 65
.word 157,195, 33,127,252,162, 64, 30, 95, 1,227,189, 62, 96,130,220
.word 35,125,159,193, 66, 28,254,160,225,191, 93, 3,128,222, 60, 98
.word 190,224, 2, 92,223,129, 99, 61,124, 34,192,158, 29, 67,161,255
.word 70, 24,250,164, 39,121,155,197,132,218, 56,102,229,187, 89, 7
.word 219,133,103, 57,186,228, 6, 88, 25, 71,165,251,120, 38,196,154
.word 101, 59,217,135, 4, 90,184,230,167,249, 27, 69,198,152,122, 36
.word 248,166, 68, 26,153,199, 37,123,58 ,100,134,216, 91, 5,231,185
.word 140,210, 48,110,237,179, 81, 15, 78, 16,242,172, 47,113,147,205
.word 17, 79,173,243,112, 46,204,146,211,141,111, 49,178,236, 14, 80
.word 175,241, 19, 77,206,144,114, 44,109, 51,209,143, 12, 82,176,238
.word 50,108,142,208, 83, 13,239,177,240,174, 76, 18,145,207, 45,115
.word 202,148,118, 40,171,245, 23, 73, 8, 86,180,234,105, 55,213,139
.word 87, 9,235,181, 54,104,138,212,149,203, 41,119,244,170, 72, 22
.word 233,183, 85, 11,136,214, 52,106, 43,117,151,201, 74, 20,246,168
.word 116, 42,200,150, 21, 75,169,247,182,232, 10, 84,215,137,107, 53
*********************************************************************************
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -