asmfile.asm

来自「系统按键显示都具有,不同的I/O口,具有很大的参考价值」· 汇编 代码 · 共 95 行

ASM
95
字号
;$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 + =
减小字号Ctrl + -
显示快捷键?