📄 nrf905_jinju.lis
字号:
01DA 87BB out 0x17,R24
01DC .dbline 348
01DC ; MISO_H;
01DC C49A sbi 0x18,4
01DE .dbline 349
01DE ; CSN_H;
01DE C29A sbi 0x18,2
01E0 .dbline 353
01E0 ; // Enable SPI,Master,Set clock rate fck/16,interrupt enable
01E0 ; // SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<SPIE)|(1<<CPHA);
01E0 ; // SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<SPIE);
01E0 ; SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
01E0 81E5 ldi R24,81
01E2 8DB9 out 0xd,R24
01E4 .dbline 355
01E4 ; // SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<CPHA);
01E4 ; SPSR = 0x00;
01E4 2224 clr R2
01E6 2EB8 out 0xe,R2
01E8 .dbline 356
01E8 ; temp = SPSR;
01E8 0EB1 in R16,0xe
01EA .dbline 357
01EA ; temp = SPCR;
01EA 0DB1 in R16,0xd
01EC .dbline 358
01EC ; SEI();
01EC 7894 sei
01EE .dbline -2
01EE L82:
01EE .dbline 0 ; func end
01EE 0895 ret
01F0 .dbsym r temp 16 c
01F0 .dbend
01F0 .dbfunc e SPI_Char _SPI_Char fV
01F0 ; c -> R18
01F0 ; rxflag -> R16
.even
01F0 _SPI_Char::
01F0 .dbline -1
01F0 .dbline 363
01F0 ; }
01F0 ;
01F0 ; /////////////////////////////////////////////////////////////
01F0 ; void SPI_Char(BYTE rxflag,char c)
01F0 ; {
01F0 .dbline 364
01F0 ; SPDR = c;
01F0 2FB9 out 0xf,R18
01F2 L84:
01F2 .dbline 365
01F2 ; while(!(SPSR & (1<<SPIF)));
01F2 L85:
01F2 .dbline 365
01F2 779B sbis 0xe,7
01F4 FECF rjmp L84
01F6 X18:
01F6 .dbline 367
01F6 ;
01F6 ; if ( rxflag ) {
01F6 0023 tst R16
01F8 79F0 breq L87
01FA X19:
01FA .dbline 367
01FA .dbline 368
01FA ; spi_rxbuf[spi_rxpt] = SPDR;
01FA 80E0 ldi R24,<_spi_rxbuf
01FC 90E0 ldi R25,>_spi_rxbuf
01FE E0910900 lds R30,_spi_rxpt
0202 FF27 clr R31
0204 E80F add R30,R24
0206 F91F adc R31,R25
0208 2FB0 in R2,0xf
020A 2082 std z+0,R2
020C .dbline 369
020C ; spi_rxpt = (spi_rxpt+1)&SPI_BUF_LEN1;
020C 80910900 lds R24,_spi_rxpt
0210 8F5F subi R24,255 ; addi 1
0212 8F70 andi R24,15
0214 80930900 sts _spi_rxpt,R24
0218 .dbline 370
0218 ; }
0218 L87:
0218 .dbline -2
0218 L83:
0218 .dbline 0 ; func end
0218 0895 ret
021A .dbsym r c 18 c
021A .dbsym r rxflag 16 c
021A .dbend
021A .dbfunc e nrF905_PowerOff_Mode _nrF905_PowerOff_Mode fV
.even
021A _nrF905_PowerOff_Mode::
021A .dbline -1
021A .dbline 375
021A ; }
021A ;
021A ; /////////////////////////////////////////////////////////////
021A ; void nrF905_PowerOff_Mode()
021A ; {
021A .dbline 376
021A ; PWR_UP_L;
021A C098 cbi 0x18,0
021C .dbline -2
021C L89:
021C .dbline 0 ; func end
021C 0895 ret
021E .dbend
021E .dbfunc e nrF905_Standby_Mode _nrF905_Standby_Mode fV
.even
021E _nrF905_Standby_Mode::
021E .dbline -1
021E .dbline 381
021E ; }
021E ;
021E ; /////////////////////////////////////////////////////////////
021E ; void nrF905_Standby_Mode()
021E ; {
021E .dbline 382
021E ; PWR_UP_H;
021E C09A sbi 0x18,0
0220 .dbline 383
0220 ; TRX_CE_L;
0220 9698 cbi 0x12,6
0222 .dbline -2
0222 L90:
0222 .dbline 0 ; func end
0222 0895 ret
0224 .dbend
0224 .dbfunc e nrF905_TX_Mode _nrF905_TX_Mode fV
.even
0224 _nrF905_TX_Mode::
0224 .dbline -1
0224 .dbline 388
0224 ; }
0224 ;
0224 ; /////////////////////////////////////////////////////////////
0224 ; void nrF905_TX_Mode()
0224 ; {
0224 .dbline 389
0224 ; PWR_UP_H;
0224 C09A sbi 0x18,0
0226 .dbline 390
0226 ; TX_EN_H;
0226 959A sbi 0x12,5
0228 .dbline 391
0228 ; TRX_CE_L;
0228 9698 cbi 0x12,6
022A .dbline -2
022A L91:
022A .dbline 0 ; func end
022A 0895 ret
022C .dbend
022C .dbfunc e nrF905_RX_Mode _nrF905_RX_Mode fV
.even
022C _nrF905_RX_Mode::
022C .dbline -1
022C .dbline 396
022C ; }
022C ;
022C ; /////////////////////////////////////////////////////////////
022C ; void nrF905_RX_Mode()
022C ; {
022C .dbline 397
022C ; PWR_UP_H;
022C C09A sbi 0x18,0
022E .dbline 398
022E ; TX_EN_L;
022E 9598 cbi 0x12,5
0230 .dbline 399
0230 ; TRX_CE_H;
0230 969A sbi 0x12,6
0232 .dbline 400
0232 ; us(650);
0232 0AE8 ldi R16,650
0234 12E0 ldi R17,2
0236 66DF rcall _us
0238 .dbline -2
0238 L92:
0238 .dbline 0 ; func end
0238 0895 ret
023A .dbend
023A .dbfunc e spi_handle _spi_handle fc
023A ; len -> R22
023A ; i -> R20
023A ; cmd -> R10
.even
023A _spi_handle::
023A 00D0 rcall push_xgsetF00C
023C A02E mov R10,R16
023E .dbline -1
023E .dbline 405
023E ; }
023E ;
023E ; /////////////////////////////////////////////////////////////
023E ; BYTE spi_handle(BYTE cmd)
023E ; {
023E .dbline 407
023E ; BYTE len,i;
023E ; switch(cmd) {
023E 4A2D mov R20,R10
0240 5527 clr R21
0242 4031 cpi R20,16
0244 E0E0 ldi R30,0
0246 5E07 cpc R21,R30
0248 99F0 breq L97
024A X20:
024A 4031 cpi R20,16
024C E0E0 ldi R30,0
024E 5E07 cpc R21,R30
0250 0CF4 brge X31
0252 6CC0 rjmp L94
0254 X31:
0254 X21:
0254 L122:
0254 4132 cpi R20,33
0256 E0E0 ldi R30,0
0258 5E07 cpc R21,R30
025A 09F4 brne X32
025C 4DC0 rjmp L114
025E X32:
025E X22:
025E 4332 cpi R20,35
0260 E0E0 ldi R30,0
0262 5E07 cpc R21,R30
0264 61F1 breq L106
0266 X23:
0266 4432 cpi R20,36
0268 E0E0 ldi R30,0
026A 5E07 cpc R21,R30
026C D1F0 breq L104
026E X24:
026E 5EC0 rjmp L94
0270 L97:
0270 .dbline 409
0270 ; case R_CONFIG:
0270 ; len = 10;
0270 6AE0 ldi R22,10
0272 .dbline 410
0272 ; for ( i=0; i<10; i++ ) {
0272 4427 clr R20
0274 13C0 rjmp L101
0276 L98:
0276 .dbline 410
0276 .dbline 411
0276 ; if ( Register[i] != spi_rxbuf[i] ) return 1;
0276 80E0 ldi R24,<_spi_rxbuf
0278 90E0 ldi R25,>_spi_rxbuf
027A E42F mov R30,R20
027C FF27 clr R31
027E E80F add R30,R24
0280 F91F adc R31,R25
0282 2080 ldd R2,z+0
0284 80E0 ldi R24,<_Register
0286 90E0 ldi R25,>_Register
0288 E42F mov R30,R20
028A FF27 clr R31
028C E80F add R30,R24
028E F91F adc R31,R25
0290 3080 ldd R3,z+0
0292 3214 cp R3,R2
0294 11F0 breq L102
0296 X25:
0296 .dbline 411
0296 01E0 ldi R16,1
0298 4BC0 rjmp L93
029A L102:
029A .dbline 412
029A ; }
029A L99:
029A .dbline 410
029A 4395 inc R20
029C L101:
029C .dbline 410
029C 4A30 cpi R20,10
029E 58F3 brlo L98
02A0 X26:
02A0 .dbline 413
02A0 ; break;
02A0 45C0 rjmp L95
02A2 L104:
02A2 .dbline 415
02A2 ; case R_RX_PAYLOAD:
02A2 ; len = Register[3] & 0x3f;
02A2 60918400 lds R22,_Register+3
02A6 6F73 andi R22,63
02A8 .dbline 419
02A8 ; // uart_TxChar(len);
02A8 ; // rxpt = 0;
02A8 ; // handlept = 0;
02A8 ; FlashFlag = FLASHLIMIT;
02A8 82E0 ldi R24,2
02AA 80930500 sts _FlashFlag,R24
02AE .dbline 426
02AE ; /* for ( i=0; i<len; i++ ) {
02AE ; uart_TxChar(spi_rxbuf[i]);
02AE ; }
02AE ; */
02AE ; // rxpt = len;
02AE ;
02AE ; handle();
02AE 16D1 rcall _handle
02B0 .dbline 427
02B0 ; NoDataCount = 0;
02B0 2224 clr R2
02B2 3324 clr R3
02B4 30920300 sts _NoDataCount+1,R3
02B8 20920200 sts _NoDataCount,R2
02BC .dbline 428
02BC ; break;
02BC 37C0 rjmp L95
02BE L106:
02BE .dbline 430
02BE ; case R_TX_ADDRESS:
02BE ; len = (Register[2] >> 4) & 0x07;
02BE 60918300 lds R22,_Register+2
02C2 6295 swap R22
02C4 6F70 andi R22,#0x0F
02C6 6770 andi R22,7
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -