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

📄 nrf905.lis

📁 嵌入式单片机控制温度传感的无线收发方案!
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 01F0           ;   SET(PORTD,PWR);
 01F0 959A              sbi 0x12,5
 01F2                   .dbline 216
 01F2           ;   CLR(PORTD,TX_EN);//maybe first
 01F2 9798              cbi 0x12,7
 01F4                   .dbline 217
 01F4           ;   SET(PORTD,TRXCE);
 01F4 969A              sbi 0x12,6
 01F6                   .dbline -2
 01F6                   .dbline 218
 01F6           ; }
 01F6           L20:
 01F6                   .dbline 0 ; func end
 01F6 0895              ret
 01F8                   .dbend
 01F8                   .dbfunc e nrf905_TxSend _nrf905_TxSend fV
                        .even
 01F8           _nrf905_TxSend::
 01F8                   .dbline -1
 01F8                   .dbline 221
 01F8           ; //->ShockBurst Send
 01F8           ; void nrf905_TxSend(void)
 01F8           ; {
 01F8                   .dbline 222
 01F8           ;   SET(PORTD,TRXCE);
 01F8 969A              sbi 0x12,6
 01FA                   .dbline 223
 01FA           ;   delay_us(20);//>10us
 01FA 04E1              ldi R16,20
 01FC 10E0              ldi R17,0
 01FE 00D0              rcall _delay_us
 0200                   .dbline 224
 0200           ;   CLR(PORTD,TRXCE);//只发送一次
 0200 9698              cbi 0x12,6
 0202                   .dbline -2
 0202                   .dbline 226
 0202           ; 
 0202           ; }
 0202           L21:
 0202                   .dbline 0 ; func end
 0202 0895              ret
 0204                   .dbend
 0204                   .dbfunc e nrf905_TxOn _nrf905_TxOn fV
                        .even
 0204           _nrf905_TxOn::
 0204                   .dbline -1
 0204                   .dbline 232
 0204           ; 
 0204           ; /*-----------------------------------------------
 0204           ;      设置为发送模式  
 0204           ; ------------------------------------------------*/ 
 0204           ; void nrf905_TxOn(void)
 0204           ; {
 0204                   .dbline 233
 0204           ;   SET(PORTD,PWR);
 0204 959A              sbi 0x12,5
 0206                   .dbline 234
 0206           ;   SET(PORTD,TX_EN);
 0206 979A              sbi 0x12,7
 0208                   .dbline 235
 0208           ;   CLR(PORTD,TRXCE);
 0208 9698              cbi 0x12,6
 020A                   .dbline -2
 020A                   .dbline 236
 020A           ; }
 020A           L22:
 020A                   .dbline 0 ; func end
 020A 0895              ret
 020C                   .dbend
 020C                   .dbfunc e nrf905_Init _nrf905_Init fV
                        .even
 020C           _nrf905_Init::
 020C                   .dbline -1
 020C                   .dbline 240
 020C           ; 
 020C           ; //初始化nrf905
 020C           ; void nrf905_Init(void)
 020C           ; {
 020C                   .dbline 241
 020C           ;    nrf905_StandBy();
 020C EBDF              rcall _nrf905_StandBy
 020E                   .dbline 242
 020E           ;    delay_10ms(2);//!!!must >3ms
 020E 02E0              ldi R16,2
 0210 10E0              ldi R17,0
 0212 00D0              rcall _delay_10ms
 0214                   .dbline 243
 0214           ;    nrf905_Config();
 0214                   .dbline -2
 0214                   .dbline 247
 0214           ;    
 0214           ;  // nrf905_SpiTest();//test... 测试:通过读配置,判断SPI操作是否正确
 0214           ;   // nrf905_RxOn();//enable nrf905接收
 0214           ; }
 0214           L23:
 0214                   .dbline 0 ; func end
 0214 7CCF              rjmp _nrf905_Config
 0216                   .dbend
 0216                   .dbfunc e nrf905_SpiTest _nrf905_SpiTest fV
 0216           ;              i -> R20
                        .even
 0216           _nrf905_SpiTest::
 0216 00D0              rcall push_gset1
 0218                   .dbline -1
 0218                   .dbline 252
 0218           ; 
 0218           ; 
 0218           ; //测试:通过读配置,判断SPI操作是否正确
 0218           ; void nrf905_SpiTest(void)
 0218           ; {
 0218                   .dbline 254
 0218           ;   uchar i;
 0218           ;   CLR(PORTB,CSN);                   
 0218 C298              cbi 0x18,2
 021A                   .dbline 255
 021A           ;   nrf905_SpiRW(RC);  //读配置
 021A 00E1              ldi R16,16
 021C DBDF              rcall _nrf905_SpiRW
 021E                   .dbline 256
 021E           ;   for (i=0;i<10;i++)
 021E 4427              clr R20
 0220 0AC0              rjmp L28
 0222           L25:
 0222                   .dbline 257
 0222                   .dbline 258
 0222 0027              clr R16
 0224 D7DF              rcall _nrf905_SpiRW
 0226 80E0              ldi R24,<_Rx_Buf
 0228 90E0              ldi R25,>_Rx_Buf
 022A E42F              mov R30,R20
 022C FF27              clr R31
 022E E80F              add R30,R24
 0230 F91F              adc R31,R25
 0232 0083              std z+0,R16
 0234                   .dbline 259
 0234           L26:
 0234                   .dbline 256
 0234 4395              inc R20
 0236           L28:
 0236                   .dbline 256
 0236 4A30              cpi R20,10
 0238 A0F3              brlo L25
 023A                   .dbline 260
 023A           ;   { 
 023A           ;    Rx_Buf[i]=nrf905_SpiRW(0);//read from nrf905
 023A           ;   }
 023A           ;   SET(PORTB,CSN);  
 023A C29A              sbi 0x18,2
 023C                   .dbline -2
 023C                   .dbline 262
 023C           ; 
 023C           ; }
 023C           L24:
 023C 00D0              rcall pop_gset1
 023E                   .dbline 0 ; func end
 023E 0895              ret
 0240                   .dbsym r i 20 c
 0240                   .dbend
 0240                   .dbfunc e nrf905_SetTxAddr _nrf905_SetTxAddr fV
                        .even
 0240           _nrf905_SetTxAddr::
 0240 00D0              rcall push_gset2
 0242                   .dbline -1
 0242                   .dbline 267
 0242           ; 
 0242           ; 
 0242           ; //写Tx地址
 0242           ; void nrf905_SetTxAddr(void)
 0242           ; {
 0242                   .dbline 268
 0242           ;   CLR(PORTB,CSN);                   
 0242 C298              cbi 0x18,2
 0244                   .dbline 269
 0244           ;   nrf905_SpiRW(WTA);  //写Tx地址  
 0244 02E2              ldi R16,34
 0246 C6DF              rcall _nrf905_SpiRW
 0248                   .dbline 270
 0248           ;   nrf905_SpiRW(TX_ADDRESS_0);
 0248 88E1              ldi R24,24
 024A 90E0              ldi R25,0
 024C 40900600          lds R4,_TX_ADDRESS+2
 0250 50900700          lds R5,_TX_ADDRESS+2+1
 0254 20900400          lds R2,_TX_ADDRESS
 0258 30900500          lds R3,_TX_ADDRESS+1
 025C 8A93              st -y,R24
 025E 8101              movw R16,R2
 0260 9201              movw R18,R4
 0262 00D0              rcall lsr32
 0264 B7DF              rcall _nrf905_SpiRW
 0266                   .dbline 271
 0266           ;   nrf905_SpiRW(TX_ADDRESS_1);
 0266 4FEF              ldi R20,255
 0268 50E0              ldi R21,0
 026A 60E0              ldi R22,0
 026C 70E0              ldi R23,0
 026E 40900600          lds R4,_TX_ADDRESS+2
 0272 50900700          lds R5,_TX_ADDRESS+2+1
 0276 20900400          lds R2,_TX_ADDRESS
 027A 30900500          lds R3,_TX_ADDRESS+1
 027E 1201              movw R2,R4
 0280 4424              clr R4
 0282 5524              clr R5
 0284 2422              and R2,R20
 0286 3522              and R3,R21
 0288 4622              and R4,R22
 028A 5722              and R5,R23
 028C 022D              mov R16,R2
 028E A2DF              rcall _nrf905_SpiRW
 0290                   .dbline 272
 0290           ;   nrf905_SpiRW(TX_ADDRESS_2);
 0290 88E0              ldi R24,8
 0292 90E0              ldi R25,0
 0294 40900600          lds R4,_TX_ADDRESS+2
 0298 50900700          lds R5,_TX_ADDRESS+2+1
 029C 20900400          lds R2,_TX_ADDRESS
 02A0 30900500          lds R3,_TX_ADDRESS+1
 02A4 8A93              st -y,R24
 02A6 8101              movw R16,R2
 02A8 9201              movw R18,R4
 02AA 00D0              rcall lsr32
 02AC 1801              movw R2,R16
 02AE 2901              movw R4,R18
 02B0 4FEF              ldi R20,255
 02B2 50E0              ldi R21,0
 02B4 60E0              ldi R22,0
 02B6 70E0              ldi R23,0
 02B8 2422              and R2,R20
 02BA 3522              and R3,R21
 02BC 4622              and R4,R22
 02BE 5722              and R5,R23
 02C0 022D              mov R16,R2
 02C2 88DF              rcall _nrf905_SpiRW
 02C4                   .dbline 273
 02C4           ;   nrf905_SpiRW(TX_ADDRESS_3);
 02C4 4FEF              ldi R20,255
 02C6 50E0              ldi R21,0
 02C8 60E0              ldi R22,0
 02CA 70E0              ldi R23,0
 02CC 40900600          lds R4,_TX_ADDRESS+2
 02D0 50900700          lds R5,_TX_ADDRESS+2+1
 02D4 20900400          lds R2,_TX_ADDRESS
 02D8 30900500          lds R3,_TX_ADDRESS+1
 02DC 2422              and R2,R20
 02DE 3522              and R3,R21
 02E0 4622              and R4,R22
 02E2 5722              and R5,R23
 02E4 022D              mov R16,R2
 02E6 76DF              rcall _nrf905_SpiRW
 02E8                   .dbline 274
 02E8           ;   SET(PORTB,CSN);  
 02E8 C29A              sbi 0x18,2
 02EA                   .dbline -2
 02EA                   .dbline 275
 02EA           ; }
 02EA           L29:
 02EA 00D0              rcall pop_gset2
 02EC                   .dbline 0 ; func end
 02EC 0895              ret
 02EE                   .dbend
 02EE                   .dbfunc e nrf905_SetData _nrf905_SetData fV
 02EE           ;              i -> R20
                        .even
 02EE           _nrf905_SetData::
 02EE 00D0              rcall push_gset1
 02F0                   .dbline -1
 02F0                   .dbline 279
 02F0           ; 
 02F0           ; //写Tx数据
 02F0           ; void nrf905_SetData(void)
 02F0           ; {uchar i;
 02F0                   .dbline 281
 02F0           ;   
 02F0           ;   CLR(PORTB,CSN);                   
 02F0 C298              cbi 0x18,2
 02F2                   .dbline 282
 02F2           ;   nrf905_SpiRW(WTP);  //写TxPayload 
 02F2 00E2              ldi R16,32
 02F4 6FDF              rcall _nrf905_SpiRW
 02F6                   .dbline 283
 02F6           ;   for (i=0;i<SIZE;i++)
 02F6 4427              clr R20
 02F8 09C0              rjmp L34
 02FA           L31:
 02FA                   .dbline 284
 02FA                   .dbline 285

⌨️ 快捷键说明

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