📄 sub.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 + -