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

📄 nrf905.lis

📁 嵌入式单片机控制温度传感的无线收发方案!
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0058 01E1              ldi R16,17
 005A 08D0              rcall _nrf905_SpiRW
 005C                   .dbline 148
 005C           ;   nrf905_SpiRW(RX_ADDRESS_2);                    //接收有效地址第3字节
 005C 01E1              ldi R16,17
 005E 06D0              rcall _nrf905_SpiRW
 0060                   .dbline 149
 0060           ;   nrf905_SpiRW(RX_ADDRESS_3);                    //接收有效地址第4字节
 0060 01E0              ldi R16,1
 0062 04D0              rcall _nrf905_SpiRW
 0064                   .dbline 151
 0064           ;   //nrf905_SpiRW(CRC16_EN | XOF_16MHz);            //CRC16模式使能,晶体振荡器频率16MHz
 0064           ;  nrf905_SpiRW(0x00);            //CRC16模式使能,晶体振荡器频率16MHz
 0064 0027              clr R16
 0066 02D0              rcall _nrf905_SpiRW
 0068                   .dbline 152
 0068           ;   SET(PORTB,CSN);                 // Disable Spi
 0068 C29A              sbi 0x18,2
 006A                   .dbline -2
 006A                   .dbline 153
 006A           ; }
 006A           L8:
 006A                   .dbline 0 ; func end
 006A 0895              ret
 006C                   .dbend
 006C                   .dbfunc e nrf905_SpiRW _nrf905_SpiRW fc
 006C           ;           temp -> R20
 006C           ;            val -> R16
                        .even
 006C           _nrf905_SpiRW::
 006C 00D0              rcall push_gset1
 006E                   .dbline -1
 006E                   .dbline 156
 006E           ; 
 006E           ; uchar nrf905_SpiRW(uchar val) 
 006E           ; {
 006E                   .dbline 159
 006E           ;     uchar temp;
 006E           ; 
 006E           ;     SPDR=val;
 006E 0FB9              out 0xf,R16
 0070           L10:
 0070                   .dbline 160
 0070           L11:
 0070                   .dbline 160
 0070           ;       while ((SPSR&(1<<SPIF))==0);//置位后,只要SPSR 寄存器的SPIF 和SREG 寄存器的全局中断使能位置位,就会引发SPI 中断
 0070 779B              sbis 0xe,7
 0072 FECF              rjmp L10
 0074                   .dbline 161
 0074           ;       temp=SPDR;
 0074 4FB1              in R20,0xf
 0076                   .dbline 162
 0076           ;       return temp;
 0076 042F              mov R16,R20
 0078                   .dbline -2
 0078           L9:
 0078 00D0              rcall pop_gset1
 007A                   .dbline 0 ; func end
 007A 0895              ret
 007C                   .dbsym r temp 20 c
 007C                   .dbsym r val 16 c
 007C                   .dbend
 007C                   .dbfunc e nrf905_StandBy _nrf905_StandBy fV
                        .even
 007C           _nrf905_StandBy::
 007C                   .dbline -1
 007C                   .dbline 167
 007C           ; }
 007C           ; 
 007C           ; //PwrDown->StandBy
 007C           ; void nrf905_StandBy(void)
 007C           ; {
 007C                   .dbline 168
 007C           ;    SET(PORTD,PWR);//上电
 007C 959A              sbi 0x12,5
 007E                   .dbline 169
 007E           ;    CLR(PORTD,TRXCE);
 007E 9698              cbi 0x12,6
 0080                   .dbline 170
 0080           ;    CLR(PORTD,TX_EN);
 0080 9798              cbi 0x12,7
 0082                   .dbline -2
 0082                   .dbline 171
 0082           ; }
 0082           L13:
 0082                   .dbline 0 ; func end
 0082 0895              ret
 0084                   .dbend
 0084                   .dbfunc e nrf905_Off _nrf905_Off fV
                        .even
 0084           _nrf905_Off::
 0084                   .dbline -1
 0084                   .dbline 175
 0084           ; 
 0084           ; //->PwrDown
 0084           ; void nrf905_Off(void)
 0084           ; {
 0084                   .dbline 176
 0084           ;   CLR(PORTD,PWR);
 0084 9598              cbi 0x12,5
 0086                   .dbline -2
 0086                   .dbline 177
 0086           ; }
 0086           L14:
 0086                   .dbline 0 ; func end
 0086 0895              ret
 0088                   .dbend
 0088                   .dbfunc e nrf905_TxOn _nrf905_TxOn fV
                        .even
 0088           _nrf905_TxOn::
 0088                   .dbline -1
 0088                   .dbline 181
 0088           ; 
 0088           ; //->ShockBurst Send
 0088           ; void nrf905_TxOn(void)
 0088           ; {
 0088                   .dbline 182
 0088           ;   SET(PORTD,PWR);
 0088 959A              sbi 0x12,5
 008A                   .dbline 183
 008A           ;   SET(PORTD,TX_EN);
 008A 979A              sbi 0x12,7
 008C                   .dbline 184
 008C           ;   CLR(PORTD,TRXCE);
 008C 9698              cbi 0x12,6
 008E                   .dbline -2
 008E                   .dbline 185
 008E           ; }
 008E           L15:
 008E                   .dbline 0 ; func end
 008E 0895              ret
 0090                   .dbend
 0090                   .dbfunc e nrf905_TxSend _nrf905_TxSend fV
                        .even
 0090           _nrf905_TxSend::
 0090                   .dbline -1
 0090                   .dbline 189
 0090           ; 
 0090           ; //->ShockBurst Send
 0090           ; void nrf905_TxSend(void)
 0090           ; {
 0090                   .dbline 190
 0090           ;   SET(PORTD,TRXCE);
 0090 969A              sbi 0x12,6
 0092                   .dbline 191
 0092           ;   delay_us(20);//>10us
 0092 04E1              ldi R16,20
 0094 10E0              ldi R17,0
 0096 00D0              rcall _delay_us
 0098                   .dbline 192
 0098           ;   CLR(PORTD,TRXCE);//只发送一次
 0098 9698              cbi 0x12,6
 009A                   .dbline -2
 009A                   .dbline 194
 009A           ; 
 009A           ; }
 009A           L16:
 009A                   .dbline 0 ; func end
 009A 0895              ret
 009C                   .dbend
 009C                   .dbfunc e nrf905_Init _nrf905_Init fV
                        .even
 009C           _nrf905_Init::
 009C                   .dbline -1
 009C                   .dbline 200
 009C           ; 
 009C           ; 
 009C           ; 
 009C           ; //初始化nrf905
 009C           ; void nrf905_Init(void)
 009C           ; {
 009C                   .dbline 201
 009C           ;    nrf905_StandBy();
 009C EFDF              rcall _nrf905_StandBy
 009E                   .dbline 202
 009E           ;    delay_10ms(2);//!!!must >3ms
 009E 02E0              ldi R16,2
 00A0 10E0              ldi R17,0
 00A2 00D0              rcall _delay_10ms
 00A4                   .dbline 203
 00A4           ;    nrf905_Config();
 00A4                   .dbline -2
 00A4                   .dbline 207
 00A4           ;    
 00A4           ;  // nrf905_SpiTest();//test... 测试:通过读配置,判断SPI操作是否正确
 00A4           ;   // nrf905_RxOn();//enable nrf905接收
 00A4           ; }
 00A4           L17:
 00A4                   .dbline 0 ; func end
 00A4 CACF              rjmp _nrf905_Config
 00A6                   .dbend
 00A6                   .dbfunc e nrf905_SpiTest _nrf905_SpiTest fV
 00A6           ;              i -> R20
                        .even
 00A6           _nrf905_SpiTest::
 00A6 00D0              rcall push_gset1
 00A8                   .dbline -1
 00A8                   .dbline 212
 00A8           ; 
 00A8           ; 
 00A8           ; //测试:通过读配置,判断SPI操作是否正确
 00A8           ; void nrf905_SpiTest(void)
 00A8           ; {
 00A8                   .dbline 214
 00A8           ;   uchar i;
 00A8           ;   CLR(PORTB,CSN);                   
 00A8 C298              cbi 0x18,2
 00AA                   .dbline 215
 00AA           ;   nrf905_SpiRW(RC);  //读配置
 00AA 00E1              ldi R16,16
 00AC DFDF              rcall _nrf905_SpiRW
 00AE                   .dbline 216
 00AE           ;   for (i=0;i<10;i++)
 00AE 4427              clr R20
 00B0 0AC0              rjmp L22
 00B2           L19:
 00B2                   .dbline 217
 00B2                   .dbline 218
 00B2 0027              clr R16
 00B4 DBDF              rcall _nrf905_SpiRW
 00B6 80E0              ldi R24,<_Rx_Buf
 00B8 90E0              ldi R25,>_Rx_Buf
 00BA E42F              mov R30,R20
 00BC FF27              clr R31
 00BE E80F              add R30,R24
 00C0 F91F              adc R31,R25
 00C2 0083              std z+0,R16
 00C4                   .dbline 219
 00C4           L20:
 00C4                   .dbline 216
 00C4 4395              inc R20
 00C6           L22:
 00C6                   .dbline 216
 00C6 4A30              cpi R20,10
 00C8 A0F3              brlo L19
 00CA                   .dbline 220

⌨️ 快捷键说明

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