📄 18202.asm
字号:
.DEFINE P_IOA_Data 0x7000
.DEFINE P_IOA_Buffer 0x7001
.DEFINE P_IOA_Dir 0x7002
.DEFINE P_IOA_Attrib 0x7003
.DEFINE P_IOA_Latch 0x7004
.DEFINE P_IOB_Data 0x7005
.DEFINE P_IOB_Buffer 0x7006
.DEFINE P_IOB_Dir 0x7007
.DEFINE P_IOB_Attrib 0x7008
.DEFINE P_SystemClock 0x7013
.DEFINE Port_Data P_IOB_Data
.DEFINE Port_Buffer P_IOB_Buffer
.DEFINE Port_Dir P_IOB_Dir
.DEFINE Port_Attrib P_IOB_Attrib
.DEFINE M_DQ 0x01 //定义端口是什么意思???
.DATA
R_SystemClock:
.DW 0x0018 //buffer of save the system clock//CPUCLK=F(osc)=24.576M
.CODE
.PUBLIC _F_18B20_Read_DQ
_F_18B20_Read_DQ:
r3 = [Port_Dir]
r3 = r3|M_DQ
[Port_Dir] = r3 //Set Port connect DQ as Ouput
r2 = [Port_Buffer]
r2 = r2&(~M_DQ)
[Port_Buffer] = r2 //Set DQ to Low
r1 = 10
call _F_18B20_Delay //Delay 40us?????????????????????????????????????????????????????
r3 = r3&(~M_DQ)
[Port_Dir] = r3 //resume the port as floatting input
r1 = 3
call _F_18B20_Delay //Delay 40us
r3 = [Port_Data]
r3 = r3&M_DQ
jz ?L18B20_Read_0
r3 = 0x80 //为什么是0x80
?L18B20_Read_0:
r1 = 30
call _F_18B20_Delay
r2 = r2|M_DQ
[Port_Buffer] = r2
r1 = 1
call _F_18B20_Delay //Delay 1us//读数间隔
r1 = r3
retf
.PUBLIC _F_18B20_Delay
_F_18B20_Delay:
cmp r1,1
jna ?Delay_Exit
?Delay_Loop:
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
r1-=1
jnz ?Delay_Loop
?Delay_Exit:
retf
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -