📄 asmfile.asm
字号:
;$include (reg51.inc)
AD_SCLK BIT P2.2
AD_A0 BIT P2.3
AD_SDATA BIT P2.4
AD_DRDY BIT P2.5
AD_RFS BIT P2.6
AD_TFS BIT P2.7
;-----------------显示--------------------
public _AD_WRM
PUBLIC _AD_DRD
SensorAsm SEGMENT CODE
RSEG SensorAsm
_AD_WRM:MOV R2,#4
OOO: LCALL AD_WRM0 ;写控制寄存器
DJNZ R2,OOO
RET
AD_WRM0:CLR AD_A0 ;写控制寄存器
SETB AD_RFS ;禁读
CLR AD_TFS ;使写数据有效
CLR AD_SCLK ;时钟置低
LCALL WRM1 ;调AD写指令代码子程序
SETB AD_TFS
SETB AD_A0
RET
WRM1: MOV A,R5 ;由@R0区读数据
WRM2: MOV R4,#8 ;写8位
WRM3: RLC A
MOV AD_SDATA,C
SETB AD_SCLK ;时钟置高,写数据,上升沿有效
CLR AD_SCLK
DJNZ R4,WRM3 ;是否写完1个字节
WRM4: MOV A,R6 ;由@R0区读数据
WRM5: MOV R4,#8 ;写8位
WRM6: RLC A
MOV AD_SDATA,C
SETB AD_SCLK ;时钟置高,写数据,上升沿有效
CLR AD_SCLK
DJNZ R4,WRM6 ;是否写完1个字节
WRM7: MOV A,R7 ;由@R0区读数据
WRM8: MOV R4,#8 ;写8位
WRM9: RLC A
MOV AD_SDATA,C
SETB AD_SCLK ;时钟置高,写数据,上升沿有效
CLR AD_SCLK
DJNZ R4,WRM9 ;是否写完1个字节
RET
_AD_DRD: CLR EA
SETB AD_A0
SETB AD_TFS
CLR AD_RFS
CLR AD_SCLK
LCALL DRD2 ;调AD读数据寄存器子程序
SETB AD_A0
SETB AD_RFS
SETB AD_TFS
SETB EA
RET
DRD2: MOV R3,#8
SETB AD_DRDY ;置P2.6,作输入
JB AD_DRDY,$ ;判转换结束否
DRD3: SETB AD_SDATA
SETB AD_SCLK ;时钟置高
CLR AD_SCLK
MOV C,AD_SDATA
RLC A
DJNZ R3,DRD3
MOV R5,A
MOV R3,#8
DRD4: SETB AD_SDATA
SETB AD_SCLK ;时钟置高
CLR AD_SCLK
MOV C,AD_SDATA
RLC A
DJNZ R3,DRD3
MOV R6,A
MOV R3,#8
DRD5: SETB AD_SDATA
SETB AD_SCLK ;时钟置高
CLR AD_SCLK
MOV C,AD_SDATA
RLC A
DJNZ R3,DRD3
MOV R7,A
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -