📄 c51pickfrankasm.htm
字号:
CLR
P1.0
;P1.0置为低电平</SPAN></TD></TR>
<TR>
<TD colSpan=2 width="100%"><SPAN
style="FONT-SIZE: 9pt">
NOP</SPAN></TD></TR>
<TR>
<TD colSpan=2 width="100%"><SPAN
style="FONT-SIZE: 9pt">
NOP</SPAN></TD></TR>
<TR>
<TD colSpan=2 width="100%"><SPAN
style="FONT-SIZE: 9pt">
SETB P1.0
;P1.0置为高电平,准备输入数据</SPAN></TD></TR>
<TR>
<TD colSpan=2 width="100%"><SPAN
style="FONT-SIZE: 9pt">
MOV
R7,#1
;延时15μs</SPAN></TD></TR>
<TR>
<TD colSpan=2 width="100%"><SPAN
style="FONT-SIZE: 9pt">
LCALL DELAY15</SPAN></TD></TR>
<TR>
<TD colSpan=2 width="100%"><SPAN
style="FONT-SIZE: 9pt">
MOV C,P1.0
;P1.0状态读入位累加器</SPAN></TD></TR>
<TR>
<TD colSpan=2 width="100%"><SPAN
style="FONT-SIZE: 9pt">
RRC A
;累加器A右移</SPAN></TD></TR>
<TR>
<TD colSpan=2 width="100%"><SPAN
style="FONT-SIZE: 9pt">
DJNZ R2,RD18202
;判一个字节是否读完</SPAN></TD></TR>
<TR>
<TD colSpan=2 width="100%"><SPAN
style="FONT-SIZE: 9pt">
MOV
@R0,A
;保存结果</SPAN></TD></TR>
<TR>
<TD colSpan=2 width="100%"><SPAN
style="FONT-SIZE: 9pt">
INC R0
;地址指针加1</SPAN></TD></TR>
<TR>
<TD colSpan=2 width="100%"><SPAN
style="FONT-SIZE: 9pt">
DJNZ R1,RD18201
;判9字节是否读完</SPAN></TD></TR></TBODY></TABLE>
<TABLE border=0 cellPadding=0 cellSpacing=0 height=798
width="100%"><TBODY>
<TR>
<TD colSpan=2 height=1 width="100%"><SPAN
style="FONT-SIZE: 9pt">
RET
;返回</SPAN></TD></TR>
<TR>
<TD height=12 width="39%"><SPAN
style="FONT-SIZE: 9pt">
RSEG ?PR?WDS1820?RW1820_WDS1820: </SPAN></TD>
<TD height=12 width="61%"><SPAN
style="FONT-SIZE: 9pt">;WDS1820代码段起始,完成1字节命令的写入 </SPAN></TD></TR>
<TR>
<TD colSpan=2 height=1 width="100%"><SPAN
style="FONT-SIZE: 9pt">
MOV R1,#8
;置1字节位移位计数器初值</SPAN></TD></TR>
<TR>
<TD colSpan=2 height=13 width="100%"><SPAN
style="FONT-SIZE: 9pt">
CLR C
;清位累加器</SPAN></TD></TR>
<TR>
<TD colSpan=2 height=10 width="100%"><SPAN
style="FONT-SIZE: 9pt">
MOV A,R7
;取经R7传递的命令参数</SPAN></TD></TR>
<TR>
<TD colSpan=2 height=17 width="100%"><SPAN
style="FONT-SIZE: 9pt">WR18201:CLR
P1.0
;P1.0置为低电平</SPAN></TD></TR>
<TR>
<TD colSpan=2 height=16 width="100%"><SPAN
style="FONT-SIZE: 9pt">
MOV
R7,#1 ;延时15μs</SPAN></TD></TR>
<TR>
<TD colSpan=2 height=15 width="100%"><SPAN
style="FONT-SIZE: 9pt">
LCALL
DELAY15</SPAN></TD></TR>
<TR>
<TD colSpan=2 height=18 width="100%"><SPAN
style="FONT-SIZE: 9pt">
RRC A
;累加器A右移1位</SPAN></TD></TR>
<TR>
<TD colSpan=2 height=18 width="100%"><SPAN
style="FONT-SIZE: 9pt">
MOV P1.0,C
;发送1位数据给DS1820</SPAN></TD></TR>
<TR>
<TD colSpan=2 height=18 width="100%"><SPAN
style="FONT-SIZE: 9pt">
MOV R7,#1
;延时15μs</SPAN></TD></TR>
<TR>
<TD colSpan=2 height=18 width="100%"><SPAN
style="FONT-SIZE: 9pt">
LCALL DELAY15</SPAN></TD></TR>
<TR>
<TD colSpan=2 height=18 width="100%"><SPAN
style="FONT-SIZE: 9pt">
SETB P1.0
;P1.0置为高电平</SPAN></TD></TR>
<TR>
<TD colSpan=2 height=16 width="100%"><SPAN
style="FONT-SIZE: 9pt">
NOP</SPAN></TD></TR>
<TR>
<TD colSpan=2 height=14 width="100%"><SPAN
style="FONT-SIZE: 9pt">
DJNZ
R1,WR18201
;判1字节数据是否发送完毕</SPAN></TD></TR>
<TR>
<TD colSpan=2 height=8 width="100%"><SPAN
style="FONT-SIZE: 9pt">
SETB P1.0
;P1.0置为高电平</SPAN></TD></TR>
<TR>
<TD colSpan=2 height=3 width="100%"><SPAN
style="FONT-SIZE: 9pt">
RET
;返回</SPAN></TD></TR>
<TR>
<TD colSpan=2 height=17 width="100%"><SPAN
style="FONT-SIZE: 9pt">
RSEG ?PR?RTDS1820?RW1820</SPAN></TD></TR>
<TR>
<TD colSpan=2 height=17 width="100%"><SPAN
style="FONT-SIZE: 9pt">RTDS1820:
;RTDS1820代码段起始,判DS1820是否存在</SPAN></TD></TR>
<TR>
<TD colSpan=2 height=15 width="100%"><SPAN
style="FONT-SIZE: 9pt">
CLR P1.0
;P1.0置为低电平</SPAN></TD></TR>
<TR>
<TD colSpan=2 height=19 width="100%"><SPAN
style="FONT-SIZE: 9pt">
MOV R7,#40
;延时约60μs</SPAN></TD></TR>
<TR>
<TD colSpan=2 height=18 width="100%"><SPAN
style="FONT-SIZE: 9pt">
LCALL DELAY15</SPAN></TD></TR>
<TR>
<TD colSpan=2 height=13 width="100%"><SPAN
style="FONT-SIZE: 9pt">
SETB P1.0
;P1.0置为高电平</SPAN></TD></TR>
<TR>
<TD colSpan=2 height=16 width="100%"><SPAN
style="FONT-SIZE: 9pt">
MOV R7,#4
;延时约60μs</SPAN></TD></TR>
<TR>
<TD colSpan=2 height=16 width="100%"><SPAN
style="FONT-SIZE: 9pt">
LCALL DELAY15</SPAN></TD></TR>
<TR>
<TD colSpan=2 height=16 width="100%"><SPAN
style="FONT-SIZE: 9pt">
MOV R7,#100
;置循环读初值</SPAN></TD></TR>
<TR>
<TD colSpan=2 height=17 width="100%"><SPAN
style="FONT-SIZE: 9pt">
SETB C
;位累加器置1</SPAN></TD></TR>
<TR>
<TD colSpan=2 height=12 width="100%"><SPAN
style="FONT-SIZE: 9pt">RST0: JNB
P1.0,RST1
;P1.0为低表明DS1820存在并返回</SPAN></TD></TR>
<TR>
<TD colSpan=2 height=13 width="100%"><SPAN
style="FONT-SIZE: 9pt">
DJNZ R7,RST0 ;判循环读100次结束否</SPAN></TD></TR>
<TR>
<TD colSpan=2 height=16 width="100%"><SPAN
style="FONT-SIZE: 9pt">
CLR C
;无DS1820存在脉冲,位累加器清零</SPAN></TD></TR>
<TR>
<TD colSpan=2 height=11 width="100%"><SPAN
style="FONT-SIZE: 9pt">RST1: RET
;DS1820存在标志经位累加器返回</SPAN></TD></TR>
<TR>
<TD height=9 width="44%"><SPAN
style="FONT-SIZE: 9pt">
RSEG ?PR?DELAY15?RW1820_DELAY15:</SPAN></TD>
<TD height=9 width="56%"><SPAN
style="FONT-SIZE: 9pt">;DELAY15代码段起始,延时15μs功能</SPAN></TD></TR>
<TR>
<TD colSpan=2 heig
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -