📄 003t_a7105.asm
字号:
LDI REG_ADR_L, 07H LDI REG_DATA_H, 00H ; DATA:00 LDI REG_DATA_L, 00H CALL WR_REG_SUB LDI REG_ADR_H, 02H ; ADDR:28 LDI REG_ADR_L, 08H LDI REG_DATA_H, 01H ; DATA:17 LDI REG_DATA_L, 07H CALL WR_REG_SUB LDI REG_ADR_H, 02H ; ADDR:29 LDI REG_ADR_L, 09H LDI REG_DATA_H, 04H ; DATA:47 LDI REG_DATA_L, 07H CALL WR_REG_SUB LDI REG_ADR_H, 02H ; ADDR:2A LDI REG_ADR_L, 0AH LDI REG_DATA_H, 08H ; DATA:80 LDI REG_DATA_L, 00H CALL WR_REG_SUB LDI REG_ADR_H, 02H ; ADDR:2B LDI REG_ADR_L, 0BH LDI REG_DATA_H, 00H ; DATA:03 LDI REG_DATA_L, 03H CALL WR_REG_SUB LDI REG_ADR_H, 02H ; ADDR:2C LDI REG_ADR_L, 0CH LDI REG_DATA_H, 00H ; DATA:01 LDI REG_DATA_L, 01H CALL WR_REG_SUB LDI REG_ADR_H, 02H ; ADDR:2D LDI REG_ADR_L, 0DH LDI REG_DATA_H, 04H ; DATA:45 LDI REG_DATA_L, 05H CALL WR_REG_SUB LDI REG_ADR_H, 02H ; ADDR:2E LDI REG_ADR_L, 0EH LDI REG_DATA_H, 01H ; DATA:18 LDI REG_DATA_L, 08H CALL WR_REG_SUB LDI REG_ADR_H, 02H ; ADDR:2F LDI REG_ADR_L, 0FH LDI REG_DATA_H, 00H ; DATA:00 LDI REG_DATA_L, 00H CALL WR_REG_SUB LDI REG_ADR_H, 03H ; ADDR:30 LDI REG_ADR_L, 00H LDI REG_DATA_H, 00H ; DATA:01 LDI REG_DATA_L, 01H CALL WR_REG_SUB LDI REG_ADR_H, 03H ; ADDR:31 LDI REG_ADR_L, 01H LDI REG_DATA_H, 00H ; DATA:0F LDI REG_DATA_L, 0FH CALL WR_REG_SUB;***************************************************************************************************************************;*** CAL LDI REG_ADR_H, 1010B ; 进入STANDBY CALL STROBE_SUB LDI REG_ADR_H, 00H ; ADDR:02 LDI REG_ADR_L, 02H LDI REG_DATA_H, 00H ; DATA:01 LDI REG_DATA_L, 01H CALL WR_REG_SUB LDI REG_ADR_H, 00H ; ADDR:02 LDI REG_ADR_L, 02H CALL RD_REG_SUB LDA SPI_DATAL BA0 $-4 LDI REG_ADR_H, 02H ; ADDR:22 LDI REG_ADR_L, 02H CALL RD_REG_SUB LDA SPI_DATAH BA0 $-4 ; 校准出错 LDI REG_ADR_H, 02H ; ADDR:24 LDI REG_ADR_L, 04H LDI REG_DATA_H, 01H ; DATA:13 LDI REG_DATA_L, 03H CALL WR_REG_SUB LDI REG_ADR_H, 02H ; ADDR:25 LDI REG_ADR_L, 05H LDI REG_DATA_H, 00H ; DATA:09 LDI REG_DATA_L, 09H CALL WR_REG_SUB RTNI;***************************************************************************************************************************;*** A/D采样子程序;***************************************************************************************************************************WR_FIFO_SUB: LDI REG_ADR_H, 1110B ; 复位写FIFO CALL STROBE_SUB ANDIM PORTD, 1110B ; SCS输出为低电平 LDI SPI_DATAH, 00H ; 05 LDI SPI_DATAL, 05H CALL WR_SPI ; FIFO地址 LDA IDCODE_H ; 0: IDCODE STA SPI_DATAH LDA IDCODE_L STA SPI_DATAL CALL WR_SPI LDA RF_HOOP_FLAG_H ; 1: HOOP_FLAG STA SPI_DATAH LDA RF_HOOP_FLAG_L STA SPI_DATAL CALL WR_SPI LDA RF_CH_NOW_H ; 2: RF_CH_NOW STA SPI_DATAH LDA RF_CH_NOW_L STA SPI_DATAL CALL WR_SPI; LDI RF_CH_NEXT_H, 05H; LDI RF_CH_NEXT_L, 00H LDA RF_CH_NEXT_H ; 3: RF_CH_NEXT STA SPI_DATAH LDA RF_CH_NEXT_L STA SPI_DATAL CALL WR_SPI LDA CH1_H ; 4: CH1 STA SPI_DATAH LDA CH1_L STA SPI_DATAL CALL WR_SPI LDA CH2_H ; 5: CH2 STA SPI_DATAH LDA CH2_L STA SPI_DATAL CALL WR_SPI LDA CH3_H ; 6: CH3 STA SPI_DATAH LDA CH3_L STA SPI_DATAL CALL WR_SPI LDA CH4_H ; 7: CH4 STA SPI_DATAH LDA CH4_L STA SPI_DATAL CALL WR_SPI ORIM PORTD,0001B ; SCS输出为高电平 RTNI;***************************************************************************************************************************;*** A/D采样子程序;***************************************************************************************************************************AD_SUB: LDI ADCPOW,0001B ; VREF=VDD, ADC POWER ON LDI ADCH,0000B ; ADC MODULE ON AD0 LDI ADCON,1100B ; TAD=8*TOSC LDA ADCON BA3 $-1 LDA ADRESH STA CH1_H LDA ADRESM STA CH1_L LDI ADCPOW,0001B ; VREF=VDD, ADC POWER ON LDI ADCH,0001B ; ADC MODULE ON AD1 LDI ADCON,1100B ; TAD=8*TOSC LDA ADCON BA3 $-1 LDA ADRESH STA CH2_H LDA ADRESM STA CH2_L LDI ADCPOW,0001B ; VREF=VDD, ADC POWER ON LDI ADCH,0110B ; ADC MODULE ON AD6 LDI ADCON,1100B ; TAD=8*TOSC LDA ADCON BA3 $-1 LDA ADRESH STA CH3_H LDA ADRESM STA CH3_L LDI ADCPOW,0001B ; VREF=VDD, ADC POWER ON LDI ADCH,0111B ; ADC MODULE ON AD7 LDI ADCON,1100B ; TAD=8*TOSC LDA ADCON BA3 $-1 LDA ADRESH STA CH4_H LDA ADRESM STA CH4_L RTNI;***************************************************************************************************************************WR_REG_IDCODE_06:; ANDIM REG_ADR_H,1011B ; R/W=0 ANDIM PORTD,1110B ; SCS输出为低电平 LDI SPI_DATAH,00H ; IDCODE 地址 LDI SPI_DATAL,06H CALL WR_SPI LDI SPI_DATAH,05H ; ID CODE0 LDI SPI_DATAL,04H CALL WR_SPI LDI SPI_DATAH,07H ; ID CODE1 LDI SPI_DATAL,05H CALL WR_SPI LDI SPI_DATAH,0CH ; ID CODE2 LDI SPI_DATAL,05H CALL WR_SPI LDI SPI_DATAH,02H ; ID CODE3 LDI SPI_DATAL,0AH CALL WR_SPI ORIM PORTD,0001B ; SCS输出为高电平 ANDIM PORTD,1110B ; SCS输出为低电平 LDI SPI_DATAH,04H ; ADDR:06 LDI SPI_DATAL,06H CALL WR_SPI CALL RD_SPI LDA SPI_DATAH LDA SPI_DATAL CALL RD_SPI LDA SPI_DATAH LDA SPI_DATAL CALL RD_SPI LDA SPI_DATAH LDA SPI_DATAL CALL RD_SPI LDA SPI_DATAH LDA SPI_DATAL ORIM PORTD,0001B ; SCS输出为高电平 RTNI;***************************************************************************************************************************STROBE_SUB: ANDIM PORTD,1110B ; SCS输出为低电平 LDA REG_ADR_H STA SPI_DATAH ORIM PDOUT,0100B ; 设置SDIO为输出;BIT 7 LDA SPI_DATAH BA3 $+3 ANDIM PORTD,1011B ; SDIO输出为低电平 JMP $+2 ORIM PORTD,0100B ; SDIO输出为高电平 ORIM PORTD,0010B ; SCL输出为高电平 ANDIM PORTD,1101B ; SCL输出为低电平;BIT 6 LDA SPI_DATAH BA2 $+3 ANDIM PORTD,1011B ; SDIO输出为低电平 JMP $+2 ORIM PORTD,0100B ; SDIO输出为高电平 ORIM PORTD,0010B ; SCL输出为高电平 ANDIM PORTD,1101B ; SCL输出为低电平;BIT 5 LDA SPI_DATAH BA1 $+3 ANDIM PORTD,1011B ; SDIO输出为低电平 JMP $+2 ORIM PORTD,0100B ; SDIO输出为高电平 ORIM PORTD,0010B ; SCL输出为高电平 ANDIM PORTD,1101B ; SCL输出为低电平;BIT 4 LDA SPI_DATAH BA0 $+3 ANDIM PORTD,1011B ; SDIO输出为低电平 JMP $+2 ORIM PORTD,0100B ; SDIO输出为高电平 ORIM PORTD,0010B ; SCL输出为高电平 ANDIM PORTD,1101B ; SCL输出为低电平 ORIM PORTD,0001B ; SCS输出为高电平 RTNI ;***************************************************************************************************************************WR_REG_SUB: ANDIM REG_ADR_H,1011B ; R/W=0 ANDIM PORTD,1110B ; SCS输出为低电平 LDA REG_ADR_H STA SPI_DATAH LDA REG_ADR_L STA SPI_DATAL CALL WR_SPI LDA REG_DATA_H STA SPI_DATAH LDA REG_DATA_L STA SPI_DATAL CALL WR_SPI ORIM PORTD,0001B ; SCS输出为高电平; CALL RD_REG_SUB RTNI;***************************************************************************************************************************RD_REG_SUB: ORIM REG_ADR_H,0100B ; R/W=1 ANDIM PORTD,1110B ; SCS输出为低电平 LDA REG_ADR_H STA SPI_DATAH LDA REG_ADR_L STA SPI_DATAL CALL WR_SPI CALL RD_SPI LDA SPI_DATAH STA REG_DATA_H LDA SPI_DATAL STA REG_DATA_L ORIM PORTD,0001B ; SCS输出为高电平 RTNI ;***************************************************************************************************************************WR_SPI: ORIM PDOUT,0100B ; 设置SDIO为输出;BIT 7 LDA SPI_DATAH BA3 $+3 ANDIM PORTD,1011B ; SDIO输出为低电平 JMP $+2 ORIM PORTD,0100B ; SDIO输出为高电平 ORIM PORTD,0010B ; SCL输出为高电平 ANDIM PORTD,1101B ; SCL输出为低电平;BIT 6 LDA SPI_DATAH BA2 $+3 ANDIM PORTD,1011B ; SDIO输出为低电平 JMP $+2 ORIM PORTD,0100B ; SDIO输出为高电平 ORIM PORTD,0010B ; SCL输出为高电平 ANDIM PORTD,1101B ; SCL输出为低电平;BIT 5 LDA SPI_DATAH BA1 $+3 ANDIM PORTD,1011B ; SDIO输出为低电平 JMP $+2 ORIM PORTD,0100B ; SDIO输出为高电平 ORIM PORTD,0010B ; SCL输出为高电平 ANDIM PORTD,1101B ; SCL输出为低电平;BIT 4 LDA SPI_DATAH BA0 $+3 ANDIM PORTD,1011B ; SDIO输出为低电平 JMP $+2 ORIM PORTD,0100B ; SDIO输出为高电平 ORIM PORTD,0010B ; SCL输出为高电平 ANDIM PORTD,1101B ; SCL输出为低电平;BIT 3 LDA SPI_DATAL BA3 $+3 ANDIM PORTD,1011B ; SDIO输出为低电平 JMP $+2 ORIM PORTD,0100B ; SDIO输出为高电平 ORIM PORTD,0010B ; SCL输出为高电平 ANDIM PORTD,1101B ; SCL输出为低电平;BIT 2 LDA SPI_DATAL BA2 $+3 ANDIM PORTD,1011B ; SDIO输出为低电平 JMP $+2 ORIM PORTD,0100B ; SDIO输出为高电平 ORIM PORTD,0010B ; SCL输出为高电平 ANDIM PORTD,1101B ; SCL输出为低电平;BIT 1 LDA SPI_DATAL BA1 $+3 ANDIM PORTD,1011B ; SDIO输出为低电平 JMP $+2 ORIM PORTD,0100B ; SDIO输出为高电平 ORIM PORTD,0010B ; SCL输出为高电平 ANDIM PORTD,1101B ; SCL输出为低电平;BIT 0 LDA SPI_DATAL BA0 $+3 ANDIM PORTD,1011B ; SDIO输出为低电平 JMP $+2 ORIM PORTD,0100B ; SDIO输出为高电平 ORIM PORTD,0010B ; SCL输出为高电平 ANDIM PORTD,1101B ; SCL输出为低电平 RTNI ;***************************************************************************************************************************RD_SPI: ANDIM PDOUT,1011B ; 设置SDIO为输入 LDI SPI_DATAH,00H LDI SPI_DATAL,00H;BIT 7 ORIM PORTD,0010B ; SCL输出为高电平 LDA PORTD BA2 $+2 ; 如果输入SDI为高电平 JMP $+2 ORIM SPI_DATAH,1000B ANDIM PORTD,1101B ; SCL输出为低电平;BIT 6 ORIM PORTD,0010B ; SCL输出为高电平 LDA PORTD BA2 $+2 ; 如果输入SDI为高电平 JMP $+2 ORIM SPI_DATAH,0100B ANDIM PORTD,1101B ; SCL输出为低电平;BIT 5 ORIM PORTD,0010B ; SCL输出为高电平 LDA PORTD BA2 $+2 ; 如果输入SDI为高电平 JMP $+2 ORIM SPI_DATAH,0010B ANDIM PORTD,1101B ; SCL输出为低电平;BIT 4 ORIM PORTD,0010B ; SCL输出为高电平 LDA PORTD BA2 $+2 ; 如果输入SDI为高电平 JMP $+2 ORIM SPI_DATAH,0001B ANDIM PORTD,1101B ; SCL输出为低电平;BIT 3 ORIM PORTD,0010B ; SCL输出为高电平 LDA PORTD BA2 $+2 ; 如果输入SDI为高电平 JMP $+2 ORIM SPI_DATAL,1000B ANDIM PORTD,1101B ; SCL输出为低电平;BIT 2 ORIM PORTD,0010B ; SCL输出为高电平 LDA PORTD BA2 $+2 ; 如果输入SDI为高电平 JMP $+2 ORIM SPI_DATAL,0100B ANDIM PORTD,1101B ; SCL输出为低电平;BIT 1 ORIM PORTD,0010B ; SCL输出为高电平 LDA PORTD BA2 $+2 ; 如果输入SDI为高电平 JMP $+2 ORIM SPI_DATAL,0010B ANDIM PORTD,1101B ; SCL输出为低电平;BIT 0 ORIM PORTD,0010B ; SCL输出为高电平 LDA PORTD BA2 $+2 ; 如果输入SDI为高电平 JMP $+2 ORIM SPI_DATAL,0001B ANDIM PORTD,1101B ; SCL输出为低电平 RTNI ;*************************************************************************************************************************** ;*** 延迟200us子程序;***************************************************************************************************************************DELAY_200US: LDI DELAY_TMPH,08H LDI DELAY_TMPL,0AH SBIM DELAY_TMPL,01H BNZ $-1 SBIM DELAY_TMPH,01H BNZ $-4 RTNI;*************************************************************************************************************************** END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -