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

📄 sub.asm

📁 笙科RF芯片A7102A汇编程序 自动发射接收测试程序
💻 ASM
字号:


;-------------------------------------------------------------------------------
; ClrRAM
; Use index @YZ to clear RAM (00h~2Fh)
;-------------------------------------------------------------------------------

ClrRAM:

	CLR		Y		 
	mov		A, #7fH
	b0mov		Z, A				;Set @YZ address from 7fh


ClrRAM10:
	clr 		@YZ				;Clear @YZ content
	decms		Z   				;z = z - 1 , skip next if z=0
	jmp 		ClrRAM10 
	clr 		@YZ				;Clear address $00

	ret

;-------------------------------------------------------------------------------
; SysInit
; System initial to define Register, RAM, I/O, Timer......
;-------------------------------------------------------------------------------
SysInit:

	MOV		A,#0FFH
	MOV		P0UR,A	
	MOV		P5UR,A
	MOV		P1UR,A	
	MOV		A,#00000000B
	MOV		P0M,A
	MOV		A,#00001100B
	MOV		P1M,A
	MOV		A,#00000000B
	MOV		P5M,A
T0_INIT:	
	B0BCLR		FT0IEN		; Disable T0 interrupt service
	B0BCLR 		FT0ENB		; Disable T0 timer
	MOV 		A, #00H
	B0MOV 		T0M, A
	MOV 		A, #0xf0
	B0MOV 		T0C, A		; Set T0 interval = 1ms
	B0BSET 		FT0IEN		; Enable T0 interrupt service
	B0BCLR 		FT0IRQ		; Clear T0 interrupt request flag
	B0BSET 		FT0ENB		; Enable T0 timer


Tc0_INIT:	
	B0BCLR		FTc0IEN		; Disable T0 interrupt service
	B0BCLR 		FTc0ENB		; Disable T0 timer
	MOV 		A, #00H
	B0MOV 		Tc0M, A
	MOV 		A,#0F0H
	B0MOV 		Tc0C, A		; Set T0 interval = 1ms
	B0BSET 		FTc0IEN		; Enable T0 interrupt service
	B0BCLR 		FTc0IRQ		; Clear T0 interrupt request flag
	B0BSET 		FTc0ENB		; Enable T0 timer





	RET

;-------------------------------------
;DELAY	2US
;-------------------------------------	
DELAY2US:
	JMP	$+1
	JMP	$+1
DELAY1US:
	jmp	$+1
	JMP	$+1
	RET
;-------------------------------------
;DELAY	1MS
;-------------------------------------
DELAY_MS:
	MOV	TIME_MS,A
DELAY1m:
	MOV	A,#250
	MOV	TIME_250US,A
	jmp	$+1
	JMP	$+1
	JMP	$+1
	jmp	$+1
	JMP	$+1
	JMP	$+1
	jmp	$+1
	DECMS	TIME_250US
	JMP	$-8
	DECMS	TIME_MS
	JMP	DELAY1m
	RET





;-------------------------------------
;8BITE WRITE
;-------------------------------------
SUB_BYTE_SEND:

	B0BSET	SDIO_M

	jmp	$+1
	jmp	$+1
	jmp	$+1
	jmp	$+1
	clr	TEMP_WRITE
	MOV	TEMP_WRITE,A		;数据入BUF
	MOV	A,#8		
	MOV	Bt_Cont,A		;8 Bit 计数
SUB_BYTE_SEND_10:
	BCLR	FC
	RLCM	TEMP_WRITE		;循环左移8 Bit 
	BTS0	FC
	BSET	SDIO			;Set SDA
	BTS1	FC
	BCLR	SDIO			;Clear SDA
	jmp	$+1
	BSET	SCK
	jmp	$+1
	jmp	$+1
	jmp	$+1
	jmp	$+1
	nop
	BCLR	SCK
	DECMS	Bt_Cont
	JMP	SUB_BYTE_SEND_10
SUB_BYTE_SEND_90:
	RET
	


;-------------------------------------
;8BITE READ
;-------------------------------------
SUB_BYTE_READ:
	
	B0BCLR	SDIO_M
	jmp	$+1
	jmp	$+1
	jmp	$+1
	jmp	$+1

SUB_BYTE_READ_00:

	CLR	TEMP_READ
	MOV	A,#08
	MOV	BT_CONT,A
SUB_BYTE_READ_10:
	BCLR	FC
	BTS1	SDIO			;Read SDA
	BCLR	FC
	BTS0	SDIO
	BSET	FC
	RLCM	TEMP_READ		;Left Shift 8 Bit
	jmp	$+1

	b0bset	sck
	jmp	$+1
	jmp	$+1
	jmp	$+1
	jmp	$+1
	nop
	B0BCLR	SCK

	DECMS	Bt_Cont
	JMP	SUB_BYTE_READ_10
RD24C08_90:
	RET	
		


;-------------------------------------
;7102A WRITE REG
;-------------------------------------
SUB_WRITE_REG:
	B0BSET	SDIO_M
	mov	a,address
	OR	A,CMD_CTRLW
	call	SUB_BYTE_SEND
SUB_16BITE:
	MOV	A,DATA_M		;HI8 BITE IN BUF
	call	SUB_BYTE_SEND
	MOV	A,DATA_L
	call	SUB_BYTE_SEND
	
	
	RET

;-------------------------------------
;7102A READ REG
;-------------------------------------
SUB_READ_REG:
	mov	a,address
	OR	A,CMD_CTRLR
	CALL	SUB_BYTE_SEND
	CLR	DATA_M
	CLR	DATA_L
	NOP
	B0BCLR	SDIO_M
	CALL	SUB_BYTE_READ_00
	MOV	A,TEMP_READ
	MOV	DATA_M,A
	CALL	SUB_BYTE_READ_00
	MOV	A,TEMP_READ
	MOV	DATA_L,A

	b0bset	sck
	jmp	$+1
	jmp	$+1
	jmp	$+1
	jmp	$+1
	nop
	B0BCLR	SCK

	RET

;-------------------------------------
;7102A WRITE ID
;-------------------------------------
SUB_WRITE_ID:
	B0BCLR	SCS
	MOV	A,#0x20			;WRITE ID
	CALL	SUB_BYTE_SEND

	MOV	A,#0x54			;SEND 4 BYTE ID
	CALL	SUB_BYTE_SEND
	MOV	A,#0x75
	CALL	SUB_BYTE_SEND
	MOV	A,#0xC5
	CALL	SUB_BYTE_SEND
	MOV	A,#0x2A
	CALL	SUB_BYTE_SEND
	
	B0BSET	SCS
	jmp	$+1
	jmp	$+1
	jmp	$+1
	jmp	$+1
	B0BCLR	SCS

	MOV	A,#0XA0			; READ ID
	CALL	SUB_BYTE_SEND

	CALL	SUB_BYTE_READ
	MOV	A,TEMP_READ
	MOV	TEMP_ID1,A
	CALL	SUB_BYTE_READ
	MOV	A,TEMP_READ
	MOV	TEMP_ID2,A
	CALL	SUB_BYTE_READ
	MOV	A,TEMP_READ
	MOV	TEMP_ID3,A
	CALL	SUB_BYTE_READ
	MOV	A,TEMP_READ
	MOV	TEMP_ID4,A
	B0BSET	SCS
	
	RET

;-------------------------------------
;7102A CONFIG_M
;-------------------------------------




SUB_CONFIG_M:

                CLR	address
@@:

		B0BCLR	SCS
		B0MOV	Y,#TABLE_T$M
		B0MOV	Z,#TABLE_T$L
               

                B0MOV    A,address
		ADD	Z,A
		B0BTS1	FC
		JMP	GETDATA_T
		INCMS	Y
		NOP
GETDATA_T:
		MOVC
		MOV	DATA_L,A
		MOV	A,R
                XOR     A,#55H
             	B0BTS0  FZ
          	RET
         	MOV	A,R
		MOV	DATA_M,A	

		CALL	SUB_WRITE_REG
		B0BSET	SCS
		jmp	$+1
		jmp	$+1
		jmp	$+1
		jmp	$+1
		INCMS	address
                JMP     @B	
		RET






TABLE_T:
		DW	0078H
		DW	0043H
		DW	0B00AH
		DW	0000H
		DW	0E6CH
		DW	0011H
		DW	1560H
		DW	0337H
		DW	1897H
		DW	501FH
		DW	0000H
		DW	003FH
		DW	1507H
		DW	0220H
		DW	4883H
		DW	00C0H	
		DW      5533H


;-------------------------------------
;7102A CAL
;-------------------------------------
SUB_CAL:
	B0BCLR	SCS
	
	MOV	A,MODE_REG		
	MOV	address,A
	MOV	A,#0X00
	MOV	DATA_M,A
	MOV	A,#0XC6
	MOV	DATA_L,A
	CALL	SUB_WRITE_REG
SUB_CAL_10:

	B0BSET	SCS
	jmp	$+1
	jmp	$+1
	jmp	$+1
	jmp	$+1
	B0BCLR	SCS

	MOV	A,MODE_REG	
	MOV	address,A
	CALL	SUB_READ_REG
	B0BTS0	DATA_L.4
	JMP	SUB_CAL_10
	B0BTS0	DATA_M.0
	JMP	SUB_CAL_10

SUB_CAL_20:

	B0BSET	SCS
	jmp	$+1
	jmp	$+1
	jmp	$+1
	jmp	$+1
	B0BCLR	SCS

	MOV	A,CALIBRATION_REG
	MOV	address,A
	CALL	SUB_READ_REG
	MOV	A,DATA_M
	MOV	TEMP_CAL1_M,A
	MOV	A,DATA_L
	MOV	TEMP_CAL1_L,A
SUB_CAL_30:

	B0BSET	SCS
	jmp	$+1
	jmp	$+1
	jmp	$+1
	jmp	$+1
	B0BCLR	SCS
	
	MOV	A,MODE_REG	
	MOV	address,A
	CALL	SUB_READ_REG
	MOV	A,DATA_M
	MOV	TEMP_CAL2_M,A
	MOV	A,DATA_L
	MOV	TEMP_CAL2_L,A
	B0BSET	SCS
	RET
;-------------------------------------
;7102A WRITE FIFO
;-------------------------------------

SUB_WRITE_FIFO:
	B0BCLR	SCS
	JMP	$+1
	JMP	$+1
	MOV	A,CMD_DATAW
	CALL	SUB_BYTE_SEND
	MOV	A,DATA1
	CALL	SUB_BYTE_SEND
	MOV	A,#0X38
	CALL	SUB_BYTE_SEND
	MOV	A,DATA3
	CALL	SUB_BYTE_SEND
	MOV	A,DATA4
	CALL	SUB_BYTE_SEND
	B0BSET	SCS
	JMP	$+1
	JMP	$+1
	JMP	$+1
	JMP	$+1
	RET

;-------------------------------------
;7102A TX EN1
;-------------------------------------	
SUB_TX_EN1:
	
	B0BSET	TRS
	JMP	$+1
	JMP	$+1
	JMP	$+1
	JMP	$+1
	JMP	$+1
	JMP	$+1
	B0BCLR	TRE
	JMP	$+1
	JMP	$+1
	JMP	$+1
	JMP	$+1
	JMP	$+1
	JMP	$+1
	B0BSET	TRE
	RET	
;-------------------------------------
;7102A RX EN1
;-------------------------------------	
SUB_RX_EN1:
	
	B0BCLR	TRS
	JMP	$+1
	JMP	$+1
	JMP	$+1
	JMP	$+1
	JMP	$+1
	JMP	$+1
	B0BCLR	TRE
	JMP	$+1
	JMP	$+1
	JMP	$+1
	JMP	$+1
	JMP	$+1
	JMP	$+1
	B0BSET	TRE
	RET	
;-------------------------------------
;7102A RX EN
;-------------------------------------	
SUB_RX_EN:
	

	B0BCLR	SCS
	jmp	$+1
	jmp	$+1
	jmp	$+1
	jmp	$+1
	MOV	A,MODE_REG		;MODE_REG	
	MOV	address,A
	MOV	A,#0X00
	MOV	DATA_M,A
	MOV	A,#0XC8
	MOV	DATA_L,A
	CALL	SUB_WRITE_REG
	B0BSET	SCS
	jmp	$+1
	jmp	$+1
	jmp	$+1
	jmp	$+1

	RET	
;-------------------------------------
;7102A TX EN
;-------------------------------------	
SUB_TX_EN:
	

	B0BCLR	SCS
	jmp	$+1
	jmp	$+1
	jmp	$+1
	jmp	$+1
	MOV	A,MODE_REG		;MODE_REG	
	MOV	address,A
	MOV	A,#0X00
	MOV	DATA_M,A
	MOV	A,#0XD8
	MOV	DATA_L,A
	CALL	SUB_WRITE_REG
	B0BSET	SCS
	jmp	$+1
	jmp	$+1
	jmp	$+1
	jmp	$+1

	RET	




;-------------------------------------
;7102A CONFIG_S
;-------------------------------------

SUB_CONFIG_S:

                CLR	address
@@:

		B0BCLR	SCS
		B0MOV	Y,#TABLE_R$M
		B0MOV	Z,#TABLE_R$L
               

                B0MOV    A,address
		ADD	Z,A
		B0BTS1	FC
		JMP	GETDATA_R
		INCMS	Y
		NOP
GETDATA_R:
		MOVC
		MOV	DATA_L,A
		MOV	A,R
                XOR     A,#55H
             	B0BTS0  FZ
          	RET
         	MOV	A,R
		MOV	DATA_M,A	

		CALL	SUB_WRITE_REG
		B0BSET	SCS
		jmp	$+1
		jmp	$+1
		jmp	$+1
		jmp	$+1
		INCMS	address
                JMP     @B	
		RET

TABLE_R:
		DW	0078H
		DW	0043H
		DW	0B00AH;0A80AH
		DW	0000H
		DW	0E6CH
		DW	0011H
		DW	1560H
		DW	0331H
		DW	1895H
		DW	501FH
		DW	0000H
		DW	003FH
		DW	1507H
		DW	0020H
		DW	4886H
		DW	00C0H	
		DW      5533H

;-------------------------------------
;7102A RX PACKET
;-------------------------------------	
SUB_RX_PACKET:
	B0BCLR	SCS
	JMP	$+1
	JMP	$+1
	MOV	A,CMD_DATAR
	CALL	SUB_BYTE_SEND
	NOP

	CALL	SUB_BYTE_READ
	MOV	A,TEMP_READ
	MOV	DATA1,A
	CALL	SUB_BYTE_READ
	MOV	A,TEMP_READ
	MOV	DATA2,A
	CALL	SUB_BYTE_READ
	MOV	A,TEMP_READ
	MOV	DATA3,A
	CALL	SUB_BYTE_READ
	MOV	A,TEMP_READ
	MOV	DATA4,A

	B0BSET	SCS
	JMP	$+1
	JMP	$+1
	JMP	$+1
	JMP	$+1

	RET
;-------------------------------------
;7102A RX resetfifo
;-------------------------------------
SUB_RX_resetfifo:
	B0BCLR	SCS		;7102 RESET
	MOV	A,cmd_rfr	
	CALL	SUB_BYTE_SEND

	B0BSET	SCS
	jmp	$+1
	jmp	$+1
	jmp	$+1
	jmp	$+1
	RET


;-------------------------------------
;7102A SET CHIP Standby mode
;-------------------------------------	
SUB_standby:

	B0BCLR	SCS					
	JMP	$+1
	JMP	$+1
	MOV	A,MODE_REG		
	MOV	address,A
	MOV	A,#0X00
	MOV	DATA_M,A
	MOV	A,#0XD0
	MOV	DATA_L,A
	CALL	SUB_WRITE_REG
	B0BSET	SCS
	JMP	$+1
	JMP	$+1
	JMP	$+1
	JMP	$+1
	ret
	

⌨️ 快捷键说明

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