📄 temperature.lst
字号:
(0584)
(0585) /////////////////////////////////////////////////////////////
(0586) void nrF905_PowerOff_Mode()
(0587) {
(0588) PWR_UP_L;
_nrF905_PowerOff_Mode:
48B 98C0 CBI 0x18,0
48C 9508 RET
(0589) }
(0590)
(0591) /////////////////////////////////////////////////////////////
(0592) void nrF905_Standby_Mode()
(0593) {
(0594) PWR_UP_H;
_nrF905_Standby_Mode:
48D 9AC0 SBI 0x18,0
(0595) TRX_CE_L;
48E 9896 CBI 0x12,6
48F 9508 RET
(0596) }
(0597)
(0598) /////////////////////////////////////////////////////////////
(0599) void nrF905_TX_Mode()
(0600) {
(0601) PWR_UP_H;
_nrF905_TX_Mode:
490 9AC0 SBI 0x18,0
(0602) TX_EN_H;
491 9A95 SBI 0x12,5
(0603) TRX_CE_L;
492 9896 CBI 0x12,6
493 9508 RET
(0604) }
(0605)
(0606) /////////////////////////////////////////////////////////////
(0607) void nrF905_RX_Mode()
(0608) {
(0609) PWR_UP_H;
_nrF905_RX_Mode:
494 9AC0 SBI 0x18,0
(0610) TX_EN_L;
495 9895 CBI 0x12,5
(0611) TRX_CE_H;
496 9A96 SBI 0x12,6
(0612) us(650);
497 E80A LDI R16,0x8A
498 E012 LDI R17,2
499 DC21 RCALL _us
49A 9508 RET
_spi_handle:
len --> R22
i --> R20
cmd --> R10
49B D4EA RCALL push_xgsetF00C
49C 2EA0 MOV R10,R16
(0613) }
(0614)
(0615) /////////////////////////////////////////////////////////////
(0616) BYTE spi_handle(BYTE cmd)
(0617) {
(0618) BYTE len,i;
(0619) switch(cmd) {
49D 2D4A MOV R20,R10
49E 2755 CLR R21
49F 3140 CPI R20,0x10
4A0 E0E0 LDI R30,0
4A1 075E CPC R21,R30
4A2 F0A1 BEQ 0x04B7
4A3 3140 CPI R20,0x10
4A4 E0E0 LDI R30,0
4A5 075E CPC R21,R30
4A6 F40C BGE 0x04A8
4A7 C07B RJMP 0x0523
4A8 3241 CPI R20,0x21
4A9 E0E0 LDI R30,0
4AA 075E CPC R21,R30
4AB F409 BNE 0x04AD
4AC C05C RJMP 0x0509
4AD 3243 CPI R20,0x23
4AE E0E0 LDI R30,0
4AF 075E CPC R21,R30
4B0 F409 BNE 0x04B2
4B1 C03A RJMP 0x04EC
4B2 3244 CPI R20,0x24
4B3 E0E0 LDI R30,0
4B4 075E CPC R21,R30
4B5 F0D1 BEQ 0x04D0
4B6 C06C RJMP 0x0523
(0620) case R_CONFIG:
(0621) len = 10;
4B7 E06A LDI R22,0xA
(0622) for ( i=0; i<10; i++ ) {
4B8 2744 CLR R20
4B9 C013 RJMP 0x04CD
(0623) if ( Register[i] != spi_rxbuf[i] ) return 1;
4BA E782 LDI R24,0x72
4BB E090 LDI R25,0
4BC 2FE4 MOV R30,R20
4BD 27FF CLR R31
4BE 0FE8 ADD R30,R24
4BF 1FF9 ADC R31,R25
4C0 8020 LDD R2,Z+0
4C1 E285 LDI R24,0x25
4C2 E091 LDI R25,1
4C3 2FE4 MOV R30,R20
4C4 27FF CLR R31
4C5 0FE8 ADD R30,R24
4C6 1FF9 ADC R31,R25
4C7 8030 LDD R3,Z+0
4C8 1432 CP R3,R2
4C9 F011 BEQ 0x04CC
4CA E001 LDI R16,1
4CB C059 RJMP 0x0525
4CC 9543 INC R20
4CD 304A CPI R20,0xA
4CE F358 BCS 0x04BA
(0624) }
(0625) break;
4CF C053 RJMP 0x0523
(0626) case R_RX_PAYLOAD:
(0627) len = Register[3] & 0x3f;
4D0 9160 0128 LDS R22,Register+3
4D2 736F ANDI R22,0x3F
(0628) rxpt = 0;
4D3 2422 CLR R2
4D4 9220 00C1 STS nrf905_temperature.c:rxpt,R2
(0629) handlept = 0;
4D6 9220 00C0 STS handlept,R2
(0630) FlashFlag = FLASHLIMIT;
4D8 E082 LDI R24,2
4D9 9380 006B STS FlashFlag,R24
(0631) for ( i=0; i<len; i++ ) {
4DB 2744 CLR R20
4DC C009 RJMP 0x04E6
(0632) uart_TxChar(spi_rxbuf[i]);
4DD E782 LDI R24,0x72
4DE E090 LDI R25,0
4DF 2FE4 MOV R30,R20
4E0 27FF CLR R31
4E1 0FE8 ADD R30,R24
4E2 1FF9 ADC R31,R25
4E3 8100 LDD R16,Z+0
4E4 DC12 RCALL _uart_TxChar
4E5 9543 INC R20
4E6 1746 CP R20,R22
4E7 F3A8 BCS 0x04DD
(0633) }
(0634)
(0635) rxpt = len;
4E8 9360 00C1 STS nrf905_temperature.c:rxpt,R22
(0636) handle();
4EA D16E RCALL _handle
(0637) break;
4EB C037 RJMP 0x0523
(0638) case R_TX_ADDRESS:
(0639) len = (Register[2] >> 4) & 0x07;
4EC 9160 0127 LDS R22,Register+2
4EE 9562 SWAP R22
4EF 706F ANDI R22,0xF
4F0 7067 ANDI R22,7
(0640) for ( i=0; i<len; i++ ) {
4F1 2744 CLR R20
4F2 C013 RJMP 0x0506
(0641) if ( tx_addr[i] != spi_rxbuf[i] ) return 1;
4F3 E782 LDI R24,0x72
4F4 E090 LDI R25,0
4F5 2FE4 MOV R30,R20
4F6 27FF CLR R31
4F7 0FE8 ADD R30,R24
4F8 1FF9 ADC R31,R25
4F9 8020 LDD R2,Z+0
4FA EA84 LDI R24,0xA4
4FB E090 LDI R25,0
4FC 2FE4 MOV R30,R20
4FD 27FF CLR R31
4FE 0FE8 ADD R30,R24
4FF 1FF9 ADC R31,R25
500 8030 LDD R3,Z+0
501 1432 CP R3,R2
502 F011 BEQ 0x0505
503 E001 LDI R16,1
504 C020 RJMP 0x0525
505 9543 INC R20
506 1746 CP R20,R22
507 F358 BCS 0x04F3
(0642) }
(0643)
(0644) break;
508 C01A RJMP 0x0523
(0645) case R_TX_PAYLOAD:
(0646) len = Register[4] & 0x3F;
509 9160 0129 LDS R22,0x0129
50B 736F ANDI R22,0x3F
(0647) for ( i=0; i<len; i++ ) {
50C 2744 CLR R20
50D C013 RJMP 0x0521
(0648) if ( tx_buf[i] != spi_rxbuf[i] ) return 1;
50E E782 LDI R24,0x72
50F E090 LDI R25,0
510 2FE4 MOV R30,R20
511 27FF CLR R31
512 0FE8 ADD R30,R24
513 1FF9 ADC R31,R25
514 8020 LDD R2,Z+0
515 E884 LDI R24,0x84
516 E090 LDI R25,0
517 2FE4 MOV R30,R20
518 27FF CLR R31
519 0FE8 ADD R30,R24
51A 1FF9 ADC R31,R25
51B 8030 LDD R3,Z+0
51C 1432 CP R3,R2
51D F011 BEQ 0x0520
51E E001 LDI R16,1
51F C005 RJMP 0x0525
520 9543 INC R20
521 1746 CP R20,R22
522 F358 BCS 0x050E
(0649) }
(0650)
(0651) break;
(0652) }
(0653)
(0654) nrF905_RX_Mode();
523 DF70 RCALL _nrF905_RX_Mode
(0655) return 0;
524 2700 CLR R16
525 C467 RJMP pop_xgsetF00C
_SPI_R_CONFIG:
i --> R20
526 934A ST R20,-Y
(0656) }
(0657)
(0658) /////////////////////////////////////////////////////////////
(0659) BYTE SPI_R_CONFIG()
(0660) {
(0661) BYTE i;
(0662)
(0663) spi_rxpt = 0;
527 2422 CLR R2
528 9220 0071 STS spi_rxpt,R2
(0664) spi_handlept = 0;
52A 9220 0070 STS spi_handlept,R2
(0665) nrF905_Standby_Mode();
52C DF60 RCALL _nrF905_Standby_Mode
(0666) CSN_L;
52D 98C2 CBI 0x18,2
(0667) SPI_Char(0,R_CONFIG);
52E E120 LDI R18,0x10
52F 2700 CLR R16
530 DF45 RCALL _SPI_Char
(0668) for ( i=0; i<10; i++ ) SPI_Char(1,0xff);
531 2744 CLR R20
532 C004 RJMP 0x0537
533 EF2F LDI R18,0xFF
534 E001 LDI R16,1
535 DF40 RCALL _SPI_Char
536 9543 INC R20
537 304A CPI R20,0xA
538 F3D0 BCS 0x0533
(0669)
(0670) CSN_H;
539 9AC2 SBI 0x18,2
(0671) return spi_handle(R_CONFIG);
53A E100 LDI R16,0x10
53B DF5F RCALL _spi_handle
53C 9149 LD R20,Y+
53D 9508 RET
_SPI_W_CONFIG:
i --> R20
53E 934A ST R20,-Y
(0672) }
(0673)
(0674) /////////////////////////////////////////////////////////////
(0675) void SPI_W_CONFIG()
(0676) {
(0677) BYTE i;
(0678)
(0679) nrF905_Standby_Mode();
53F DF4D RCALL _nrF905_Standby_Mode
(0680) ms(10);
540 E00A LDI R16,0xA
541 E010 LDI R17,0
542 DB5D RCALL _ms
543 C017 RJMP 0x055B
(0681) while(1) {
(0682) CSN_L;
544 98C2 CBI 0x18,2
(0683) SPI_Char(0,W_CONFIG);
545 2722 CLR R18
546 2700 CLR R16
547 DF2E RCALL _SPI_Char
(0684) for ( i=0; i<10; i++ ) {
548 2744 CLR R20
549 C00A RJMP 0x0554
(0685) SPI_Char(0,Register[i]);
54A E285 LDI R24,0x25
54B E091 LDI R25,1
54C 2FE4 MOV R30,R20
54D 27FF CLR R31
54E 0FE8 ADD R30,R24
54F 1FF9 ADC R31,R25
550 8120 LDD R18,Z+0
551 2700 CLR R16
552 DF23 RCALL _SPI_Char
553 9543 INC R20
554 304A CPI R20,0xA
555 F3A0 BCS 0x054A
(0686) }
(0687)
(0688) CSN_H;
556 9AC2 SBI 0x18,2
(0689)
(0690) if ( !SPI_R_CONFIG() ) break;
557 DFCE RCALL _SPI_R_CONFIG
558 2300 TST R16
559 F409 BNE 0x055B
55A C001 RJMP 0x055C
55B CFE8 RJMP 0x0544
(0691) }
(0692)
(0693) nrF905_RX_Mode();
55C DF37 RCALL _nrF905_RX_Mode
55D 9149 LD R20,Y+
55E 9508 RET
_SPI_R_TX_PAYLOAD:
len --> R20
i --> R10
55F 92AA ST R10,-Y
560 934A ST R20,-Y
(0694) }
(0695)
(0696) /////////////////////////////////////////////////////////////
(0697) BYTE SPI_R_TX_PAYLOAD()
(0698) {
(0699) BYTE i,len;
(0700)
(0701) spi_rxpt = 0;
561 2422 CLR R2
562 9220 0071 STS spi_rxpt,R2
(0702) spi_handlept = 0;
564 9220 0070 STS spi_handlept,R2
(0703) nrF905_Standby_Mode();
566 DF26 RCALL _nrF905_Standby_Mode
(0704) CSN_L;
567 98C2 CBI 0x18,2
(0705) SPI_Char(0,R_TX_PAYLOAD);
568 E221 LDI R18,0x21
569 2700 CLR R16
56A DF0B RCALL _SPI_Char
(0706) len = Register[4] & 0x3F;
56B 9140 0129 LDS R20,0x0129
56D 734F ANDI R20,0x3F
(0707) for ( i=0; i<len; i++ ) SPI_Char(1,0xff);
56E 24AA CLR R10
56F C004 RJMP 0x0574
570 EF2F LDI R18,0xFF
571 E001 LDI R16,1
572 DF03 RCALL _SPI_Char
573 94A3 INC R10
574 16A4 CP R10,R20
575 F3D0 BCS 0x0570
(0708)
(0709) CSN_H;
576 9AC2 SBI 0x18,2
(0710) return spi_handle(R_TX_PAYLOAD);
577 E201 LDI R16,0x21
578 DF22 RCALL _spi_handle
579 9149 LD R20,Y+
57A 90A9 LD R10,Y+
57B 9508 RET
_SPI_W_TX_PAYLOAD:
len --> Y,+1
i --> R10
57C 92AA ST R10,-Y
(0711) }
(0712)
(0713) /////////////////////////////////////////////////////////////
(0714) void SPI_W_TX_PAYLOAD()
(0715) {
(0716) BYTE i,len;
(0717)
(0718) CSN_L;
57D 98C2 CBI 0x18,2
(0719) SPI_Char(0,W_TX_PAYLOAD);
57E E220 LDI R18,0x20
57F 2700 CLR R16
580 DEF5 RCALL _SPI_Char
(0720)
(0721) // len = Register[4] & 0x3F;
(0722)
(0723) Register[4] = tx_len;
581 9020 0083 LDS R2,nrf905_temperature.c:tx_len
583 9220 0129 STS 0x0129,R2
(0724) for ( i=0; i<tx_len; i++ ) {
585 24AA CLR R10
586 C012 RJMP 0x0599
(0725) SPI_Char(0,tx_buf[i]);
587 E884 LDI R24,0x84
588 E090 LDI R25,0
589 2DEA MOV R30,R10
58A 27FF CLR R31
58B 0FE8 ADD R30,R24
58C 1FF9 ADC R31,R25
58D 8120 LDD R18,Z+0
58E 2700 CLR R16
58F DEE6 RCALL _SPI_Char
(0726) uart_TxChar(tx_buf[i]);
590 E884 LDI R24,0x84
591 E090 LDI R25,0
592 2DEA MOV R30,R10
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -