⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pro-1.asm

📁 wang-pro-1.rar
💻 ASM
字号:
ORG 0000H

MOV SP,#05FH

LJMP MAIN0

CTRL_REG1 EQU 20H
CTRL_REG2 EQU 21H
CTRL_REG3 EQU 22H
STATUS_REG EQU 27H
OUTX EQU 29H
OUTY EQU 2BH
OUTZ EQU 2DH
FF_WU_CFG_1 EQU 30H
FF_WU_SRC_1 EQU 31H
FF_WU_THS_1 EQU 32H
FF_WU_DURATION_1 EQU 33H


SADW EQU 3AH
SADR EQU 3BH

SDA EQU P1.3		
SCL EQU P1.2

	
ORG 0030H
MAIN0:  MOV TMOD,#20H		
	MOV TH1,#0FDH
	MOV TL1,#0FDH		;T1计数器时间值 9600HZ
	SETB TR1
	MOV SCON,#40H		;工作于方式2
	MOV PCON,#00000000B	;波特率不加倍
	
	CLR EA			;关中断


MAIN1:	LCALL STA         ;写CTRL_REG1控制字
        MOV A,#SADW
        LCALL WRB
        LCALL CACK
        JB F0,MAIN1
WREG1:  MOV A,#CTRL_REG1
        LCALL WRB         
        LCALL CACK
        JB F0,WREG1
WDAT1:  MOV A,#11000111B	;c7H	
        LCALL WRB
        LCALL CACK
        JB F0,WDAT1
        LCALL STOP

MAIN2:  LCALL STA         ;写CTRL_REG2控制字
        MOV A,#SADW
        LCALL WRB
        LCALL CACK
        JB F0,MAIN2
WREG2:  MOV A,#CTRL_REG2
        LCALL WRB         
        LCALL CACK
        JB F0,WREG2
WDAT2:  MOV A,#10000000B	;80H
        LCALL WRB
        LCALL CACK
        JB F0,WDAT2
        LCALL STOP    
/*
MAIN3:  LCALL STA         ;写CTRL_REG3控制字
        MOV A,#SADW
        LCALL WRB
        LCALL CACK
        JB F0,MAIN3
WREG3:  MOV A,#CTRL_REG3
        LCALL WRB         
        LCALL CACK
        JB F0,WREG3
WDAT3:  MOV A,#11011100B	;DCH
        LCALL WRB
        LCALL CACK
        JB F0,WDAT3
        LCALL STOP

MAIN4:  LCALL STA         ;写FF_WU_CFG_1控制字
        MOV A,#SADW
        LCALL WRB
        LCALL CACK
        JB F0,MAIN4
WREG4:  MOV A,#FF_WU_CFG_1
        LCALL WRB         
        LCALL CACK
        JB F0,WREG4
WDAT4:  MOV A,#01111111B
        LCALL WRB
        LCALL CACK
        JB F0,WDAT4
        LCALL STOP


MAIN5:  LCALL STA         ;写FF_WU_THS_1控制字
        MOV A,#SADW
        LCALL WRB
        LCALL CACK
        JB F0,MAIN5
WREG5:  MOV A,#FF_WU_THS_1
        LCALL WRB         
        LCALL CACK
        JB F0,WREG5
WDAT5:  MOV A,#00000011B	;具体数据待定???
        LCALL WRB
        LCALL CACK
        JB F0,WDAT5
        LCALL STOP
	
*/	
	

;]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]

	;MOV A,#55H
RSTATU: 
	
;	MOV SBUF,A		;将上个循环的z轴数据传给电脑
;	JNB TI,$		;z轴数据是否传完,传完传x轴给电脑
;	CLR TI
	
	MOV A,#55H		
	MOV SBUF,A

RSTAA:	LCALL STA		;读STATUS_REG的状态
        MOV A,#SADW
        LCALL WRB
        LCALL CACK
        JB F0,RSTAA
WSUB1:  MOV A,#STATUS_REG
 	LCALL WRB
	LCALL CACK
	JB F0,WSUB1
	
RSAT:	LCALL STA
	MOV A,#SADR
	LCALL WRB
	LCALL CACK
	JB F0,RSAT
	LCALL RDB
	LCALL MNACK
	LCALL STOP
	
	MOV A,R6
	ANL A,#00001111B		;???
				;检验STATUS_REG状态是否符合要求
	CJNE A,#00001111B,RSTAA


/*	
RSRC1:  LCALL STA		;读FF_WU_SRC_1的状态
        MOV A,#SADW
        LCALL WRB
        LCALL CACK
        JB F0,RSRC1
WSUB2:  MOV A,#FF_WU_SRC_1
 	LCALL WRB
	LCALL CACK
	JB F0,WSUB2
	
RSAT2:	LCALL STA
	MOV A,#SADR
	LCALL WRB
	LCALL CACK
	JB F0,RSAT2
	LCALL RDB
	LCALL MNACK
	LCALL STOP
	
				;检验FF_WU_SRC_1的状态是否符合要求
	CJNE R6,#00000000B,RSRC1   
	

*/



REDX:   LCALL STA		;读OUTX的状态
        MOV A,#SADW
        LCALL WRB
        LCALL CACK
        JB F0,REDX
WSUB3:  MOV A,#OUTX
 	LCALL WRB
	LCALL CACK
	JB F0,WSUB3
	
RSAT3:	LCALL STA
	MOV A,#SADR
	LCALL WRB
	LCALL CACK
	JB F0,RSAT3
	LCALL RDB
	LCALL MNACK
	LCALL STOP

	
	JNB TI,$		;开始信号是否传完,传完传x轴给电脑
	CLR TI
	
;	MOV A,#01H

	MOV SBUF,A
	

REDY:   LCALL STA		;读OUTY的状态
        MOV A,#SADW
        LCALL WRB
        LCALL CACK
        JB F0,REDY
WSUB4:  MOV A,#OUTY
 	LCALL WRB
	LCALL CACK
	JB F0,WSUB4
	
RSAT4:	LCALL STA
	MOV A,#SADR
	LCALL WRB
	LCALL CACK
	JB F0,RSAT4
	LCALL RDB
	LCALL MNACK
	LCALL STOP
		
	JNB TI,$		;x轴数据是否传完,传完传y轴数据给电脑
	CLR TI

;	MOV A,#02H
	
	MOV SBUF,A	

	


REDZ:   LCALL STA		;读OUTZ的状态
        MOV A,#SADW
        LCALL WRB
        LCALL CACK
        JB F0,REDZ
WSUB5:  MOV A,#OUTZ
 	LCALL WRB
	LCALL CACK
	JB F0,WSUB5
	
RSAT5:	LCALL STA
	MOV A,#SADR
	LCALL WRB
	LCALL CACK
	JB F0,RSAT5
	LCALL RDB
	LCALL MNACK
	LCALL STOP

 	JNB TI,$		;y轴数据是否传完,传完传z轴
	CLR TI

	MOV SBUF,A

	JNB TI,$		;z轴数据是否传完
	CLR TI
	
;	MOV A,#03H

	LJMP RSTATU			
		

	

;]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]




STA:	SETB SDA		;产生起始信号
	SETB SCL
	NOP
	NOP
	NOP
	CLR SDA
	NOP
	NOP
	CLR SCL
	RET

STOP:	CLR SDA			;产生停止信号
	SETB SCL
	NOP
	NOP
	SETB SDA
	NOP
	NOP
	NOP
	CLR SCL
	RET

MACK:	CLR SDA			;发送应答位ACK
	SETB SCL
	NOP
	NOP
	CLR SCL
	SETB SDA
	RET

MNACK:	SETB SDA		;发送非应答位
	SETB SCL
	NOP
	NOP	
	CLR SCL
	CLR SDA
	RET

CACK:	SETB SDA		;应答位检查子程序
	SETB SCL
	NOP
	MOV C,SDA
	MOV F0,C
	CLR SCL
	NOP
	RET

WRB:	MOV R7,#8		;字节数据发送子程序
WLP:	RLC A
	JC WR1
	CLR SDA
	SETB SCL
	NOP
	NOP
	CLR SCL
	DJNZ R7,WLP
	RET
WR1:	SETB SDA
	SETB SCL
	NOP
	NOP
	CLR SCL
	CLR SDA
	DJNZ R7,WLP
	RET

RDB:	MOV R7,#8		;字节数据接收子程序
RLP:	SETB SDA
	SETB SCL
	MOV C,SDA
	MOV A,R6
	RLC A
	MOV R6,A
	CLR SCL
	DJNZ R7,RLP
	RET
	
	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -