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

📄 rf收发汇编参考代码.asm

📁 LT8900
💻 ASM
📖 第 1 页 / 共 2 页
字号:
          RETURN

//*********************************************************************
Init_FrameReg:
          CLRR                Table_Index
Set_FrameReg:
          MOVR                Table_Index, A
          CALL                FRAME_TABLE
          MOVAR               SPI_Addr
          XORIA               0FFH
          BTRSC               Status,Z_B
          GOTO                Set_Framereg_End
          INCR                Table_Index, R
          MOVR                Table_Index, A
          CALL                FRAME_TABLE
          MOVAR               SPI_Data_High
          INCR                Table_Index, R
          MOVR                Table_Index, A
          CALL                FRAME_TABLE
          MOVAR               SPI_Data_Low
          CALL                Write_SPI_Reg
          INCR                Table_Index, R
          GOTO                Set_FrameReg
Set_Framereg_End:
          RETURN

/*********************************************************************
*  test RF Register, if read==write test pass
*********************************************************************/
TEST_Initial_RF:
          CLRR                Table_Index
Check_Digit_Reg:
          MOVR                Table_Index,A
          CALL                FRAME_TABLE
          MOVAR               SPI_Addr
          XORIA               0FFH
          BTRSC               STATUS,Z_B
          GOTO                RF_Test_Ret
          CALL                Read_SPI_Reg
          INCR                Table_Index, R
          MOVR                Table_Index,A
          CALL                FRAME_TABLE
          XORAR               SPI_Data_High, A
          BTRSS               STATUS,Z_B
          GOTO                RF_Init_ERROR
          INCR                Table_Index, R
          MOVR                Table_Index,A
          CALL                FRAME_TABLE
          XORAR               SPI_Data_LOW, A
          BTRSS               STATUS,Z_B
          GOTO                RF_Init_ERROR
RF_Table_Inc:
          INCR                Table_Index, R
          GOTO                Check_Digit_Reg
RF_Init_ERROR:
          BSR                 Test_Error_B
          GOTO                RF_Test_Ret
RF_Test_Ret:
          RETURN

/*********************************************************************
*  Function: Set Default Communicate SyncWord
*  Input:    Default_Addr_High, Default_Addr_Low
*  Output:   None
*********************************************************************/
RF_Set_Default_SyncWord:
          MOVIA               Default_Sync_Word1
          MOVAR               SPI_Data_High
          MOVIA               Default_Sync_Word2
          MOVAR               SPI_Data_Low
          MOVIA               Sync_Word_1stAddr
          MOVAR               SPI_Addr
          CALL                Write_SPI_Reg
          NOP
          MOVIA               Default_Sync_Word3
          MOVAR               SPI_Data_High
          MOVIA               Default_Sync_Word4
          MOVAR               SPI_Data_Low
          MOVIA               Sync_Word_2ndAddr
          MOVAR               SPI_Addr
          CALL                Write_SPI_Reg
          RETURN

/*********************************************************************
*  Function: Rewrite Communicate SyncWord
*  Input:    Commun_SyncWord1, Commun_SyncWord2,
              Commun_SyncWord3, Commun_SyncWord4
*  Output:   None
*********************************************************************/
RF_Set_Commun_SyncWord:
          CLRR                Table_Index
          MOVR                Table_Index, A
          CALL                ID_TABLE
          MOVAR               SPI_Data_High
          INCR                Table_Index, R
          MOVR                Table_Index, A
          CALL                ID_TABLE
          MOVAR               SPI_Data_Low
          MOVIA               Sync_Word_1stAddr
          MOVAR               SPI_Addr
          CALL                Write_SPI_Reg
          INCR                Table_Index, R
          MOVR                Table_Index, A
          CALL                ID_TABLE
          MOVAR               SPI_Data_High
          INCR                Table_Index, R
          MOVR                Table_Index, A
          CALL                ID_TABLE
          MOVAR               SPI_Data_Low
          MOVIA               Sync_Word_2ndAddr
          MOVAR               SPI_Addr
          CALL                Write_SPI_Reg
          RETURN

/*********************************************************************
*  Function: Enter TX State
*  Input:    SPI_Addr,SPI_Data_High,SPI_Data_Low
*  Output:   None
*********************************************************************/
RF_Enter_TX_State:
          MOVIA               007H
          MOVAR               SPI_Addr
          MOVIA               001H
          MOVAR               SPI_Data_High
          
          BTRSS               Device_Select_B
          GOTO                Key_TX_Channel
Mouse_TX_Channel:
          BTRSC               Mouse_Code_B
          GOTO                Mouse_Code_TXChannel
          
          MOVR                Channel_Index, A
          CALL                Mouse_Normal_Channle_Table
          GOTO                Set_TX_Channel

Key_TX_Channel:
          BTRSC               Key_Code_B
          GOTO                Key_Code_TXChannel
          MOVR                Channel_Index, A
          CALL                Key_Normal_Channle_Table
          GOTO                Set_TX_Channel
          
Mouse_Code_TXChannel:
          MOVR                Special_Index, A
          CALL                Mouse_Code_Channle_Table
          GOTO                Set_TX_Channel
          
Key_Code_TXChannel:
          MOVR                Special_Index, A
          CALL                Key_Code_Channle_Table
          GOTO                Set_TX_Channel
          
Set_TX_Channel:
          MOVAR               SPI_Data_Low
          CALL                Write_SPI_Reg
          RETURN

/*********************************************************************
*  Function: Enter RX State
*  Input:    SPI_Addr,SPI_Data_High,SPI_Data_Low
*  Output:   None
*********************************************************************/
RF_Enter_RX_State:
          MOVIA               007H
          MOVAR               SPI_Addr
          CLRR                SPI_Data_High

          BTRSS               Device_Select_B
          GOTO                Key_RX_Channel
Mouse_RX_Channel:
          BTRSC               Mouse_Code_B
          GOTO                Mouse_Code_RXChannel
          MOVR                Channel_Index, A
          CALL                Mouse_Normal_Channle_Table
          GOTO                Set_RX_Channel
          
Key_RX_Channel:
          BTRSC               Key_Code_B
          GOTO                Key_Code_RXChannel
          MOVR                Channel_Index, A
          CALL                Key_Normal_Channle_Table
          GOTO                Set_RX_Channel
          
Mouse_Code_RXChannel:
          MOVR                Special_Index, A
          CALL                Mouse_Code_Channle_Table
          GOTO                Set_RX_Channel
          
Key_Code_RXChannel:
          MOVR                Special_Index, A
          CALL                Key_Code_Channle_Table
          GOTO                Set_RX_Channel
          
Set_RX_Channel:
          IORIA               080H
          MOVAR               SPI_Data_Low
          CALL                Write_SPI_Reg
          RETURN

/*********************************************************************
*  Function: RF Enter Idle State
*  Input:    SPI_Addr,SPI_Data_High,SPI_Data_Low
*  Output:   None
*********************************************************************/
RF_Enter_Idle_State:
          MOVIA               007H
          MOVAR               SPI_Addr
          CLRR                SPI_Data_High
          CLRR                SPI_Data_Low
          CALL                Write_SPI_Reg
          RETURN

/*********************************************************************
*  Function: RF Enter Sleep State
*  Input:    SPI_Addr,SPI_Data_High,SPI_Data_Low
*  Output:   None
*********************************************************************/
/*
RF_Enter_Sleep_State:
          MOVIA               023H                                    // Reg35
          MOVAR               SPI_Addr
          CALL                Read_SPI_Reg
          MOVIA               040H                                    // Bit14 = 1; Sleep
          IORAR               SPI_Data_High, R
          CALL                Write_SPI_Reg

          RETURN
*/
/*********************************************************************
*  Function: RF Enter Power Down State
*  Input:    SPI_Addr,SPI_Data_High,SPI_Data_Low
*  Output:   None
*********************************************************************/
/*
RF_Enter_Power_Down:
          MOVIA               023H                                    // Reg35
          MOVAR               SPI_Addr
          CALL                Read_SPI_Reg
          MOVIA               080H                                    // Bit15 = 1; Power Down
          IORAR               SPI_Data_High, R
          CALL                Write_SPI_Reg
          RETURN
*/
/*********************************************************************
*  Function: RF Wake Up
*  Input:    SPI_Addr,SPI_Data_High,SPI_Data_Low
*  Output:   None
*********************************************************************/
/*
RF_Wakeup:
          MOVIA               iTMR0_T1
          MOVAR               TMR0

;         BCR                 RF_CSn                                  // /SS拉低2ms wakeup RF
;{
          MOVIA               BCR_RF_CSn
          ANDAR               PORTA, R
;}

          BTRSS               Time0_Out_B
          GOTO                $-1
          BCR                 Time0_Out_B

          MOVIA               iTMR0_T2
          MOVAR               TMR0

          BSR                 RF_CSn

          MOVIA               023H                                    // Reg35
          MOVAR               SPI_Addr
          CALL                Read_SPI_Reg
          MOVIA               0BFH
          ANDAR               SPI_Data_High, R
          CALL                Write_SPI_Reg
          NOP
          CALL                RF_Enter_Idle_State
          RETURN
*/
/*********************************************************************
*  Function: Read FIFO RAM
*  Input:    None
*  Output:   RX_BUF    , Receive_Error
*  Software SPI
*********************************************************************/
RF_Read_FIFO_RAM:
          MOVIA               048D                                    // Reg48  State Regsiter
          MOVAR               SPI_Addr
          CALL                Read_SPI_Reg
          MOVR                SPI_Data_High, A
          ANDIA               0C0H
          BTRSS               STATUS, Z_B
          GOTO                Receive_Data_Error                      // receive error
          CLRR                Fre_Lost_Count
          BCR                 Key_Commun_Flag,Lose_Frame_B
          BCR                 Mouse_Commun_Flag,Lose_Frame_B
;         BCR                 RF_CSn                                  // /SS=0
;{
          MOVIA               BCR_RF_CSn
          ANDAR               PORTA, R
;}
          MOVIA               0B2H                                    // Reg50  0X32|0X80
          CALL                WriteSPI
          NOP
          CALL                ReadSPI
          MOVAR               RX_Data_Length
          XORIA               NORMAL_DATA_LENGTH
          BTRSS               STATUS,Z_B
          GOTO                Receive_Data_Error

Save_Data_Length:
          MOVR                RX_Data_Length, A
          MOVAR               TempCnt

          MOVIA               RX_BUF+1
          MOVAR               FSR
Read_FIFO_Loop:
          CALL                ReadSPI
          MOVAR               INDF
          INCR                FSR, R
          DECRSZ              TempCnt, R
          GOTO                Read_FIFO_Loop
Disable_RF_Commun:
;         BSR                 RF_CSn                                  //    /SS    =1
;{
          MOVIA               BSR_RF_CSn
          IORAR               PORTA, R
;}
          RETURN
          
Receive_Data_Error:
          BSR                 Key_Commun_Flag, Receive_error_B
          BSR                 Mouse_Commun_Flag,Receive_error_B
          INCR                Fre_Lost_Count, R
          GOTO                Disable_RF_Commun

/*********************************************************************
*  Function: Write FIFO RAM
*  Input:    SPI_Addr,TX_BUF
*  Output:   None
*  Software SPI
*********************************************************************/
RF_Write_FIFO_RAM:
;         BCR                 RF_CSn                                  // /SS=1
;{
          MOVIA               BCR_RF_CSn
          ANDAR               PORTA, R
;}
          MOVIA               032H                                    // Reg50
          CALL                WriteSPI

          MOVR                TX_Data_Length, A
          ADDIA               001H
          MOVAR               TEMPCNT
          MOVIA               TX_BUF                                  // Write DATA START Address
          MOVAR               FSR
Write_FIFO_Loop:
          MOVR                INDF, A
          CALL                WriteSPI
          INCR                FSR, R
          DECRSZ              TEMPCNT, R
          GOTO                Write_FIFO_Loop
;         BSR                 RF_CSn                                  //    /SS    =1
;{
          MOVIA               BSR_RF_CSn
          IORAR               PORTA, R
;}
          RETURN

/*********************************************************************
*  Function: Reset TX/RX FIFO
*  Input:    SPI_Addr,SPI_Data_High,SPI_Data_Low
*  Output:   None
*********************************************************************/
RF_Reset_TX_FIFO:
RF_Reset_RX_FIFO:
          MOVIA               034H                                    // Reg52
          MOVAR               SPI_Addr
          MOVIA               080H
          MOVAR               SPI_Data_High
          MOVAR               SPI_Data_Low
          CALL                Write_SPI_Reg
          RETURN

⌨️ 快捷键说明

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