📄 jfp_fasong.lst
字号:
0097 DFBB RCALL _Delay
(0132) SpiReadSpiWrite(WTP); // 写数据前先写写数据命令
0098 E200 LDI R16,0x20
0099 DFD2 RCALL _SpiReadSpiWrite
(0133) for (i=0;i<4;i++)
009A 2744 CLR R20
009B C007 RJMP 0x00A3
(0134) {
(0135) SpiReadSpiWrite(TxBUF[i]); // 待发送的32字节数据
009C 2FE4 MOV R30,R20
009D 27FF CLR R31
009E 0FE6 ADD R30,R22
009F 1FF7 ADC R31,R23
00A0 8100 LDD R16,Z+0
00A1 DFCA RCALL _SpiReadSpiWrite
00A2 9543 INC R20
00A3 3044 CPI R20,4
00A4 F3B8 BCS 0x009C
(0136) }
(0137) Hign_nrf905_CSN;
00A5 9AC4 SBI 0x18,4
(0138) Delay(1); // 关闭Spi,不允许对nrf905进行读写操作
00A6 E001 LDI R16,1
00A7 E010 LDI R17,0
00A8 DFAA RCALL _Delay
(0139) Low_nrf905_CSN; // 使能Spi
00A9 98C4 CBI 0x18,4
(0140) SpiReadSpiWrite(WTA); // 写地址前首先先写地址命令
00AA E202 LDI R16,0x22
00AB DFC0 RCALL _SpiReadSpiWrite
(0141) for (i=0;i<4;i++) // 写 4 bytes 地址
00AC 2744 CLR R20
00AD C009 RJMP 0x00B7
(0142) {
(0143) SpiReadSpiWrite(TxAddress[i]);
00AE E680 LDI R24,0x60
00AF E090 LDI R25,0
00B0 2FE4 MOV R30,R20
00B1 27FF CLR R31
00B2 0FE8 ADD R30,R24
00B3 1FF9 ADC R31,R25
00B4 8100 LDD R16,Z+0
00B5 DFB6 RCALL _SpiReadSpiWrite
00B6 9543 INC R20
00B7 3044 CPI R20,4
00B8 F3A8 BCS 0x00AE
(0144) }
(0145) Hign_nrf905_CSN; // 关闭Spi
00B9 9AC4 SBI 0x18,4
(0146) Hign_nrf905_TRX_CE; // Set TRX_CE high,start Tx data transmission
00BA 9A95 SBI 0x12,5
(0147) Delay(1); // 等待DR变高
00BB E001 LDI R16,1
00BC E010 LDI R17,0
00BD DF95 RCALL _Delay
(0148) Low_nrf905_TRX_CE; // 设置TRX_CE=0
00BE 9895 CBI 0x12,5
00BF 940E0118 CALL pop_gset2
00C1 9508 RET
(0149) }
(0150) //-------------------------------发送模式激发-----------------------------------
(0151) void SetTxMode(void)
(0152) {
(0153) Low_nrf905_TRX_CE; //
_SetTxMode:
00C2 9895 CBI 0x12,5
(0154) Hign_nrf905_TX_EN; //发送使能
00C3 9AC0 SBI 0x18,0
(0155) Delay(2); // delay for mode change(>=650us)根据晶振不同要改变
00C4 E002 LDI R16,2
00C5 E010 LDI R17,0
00C6 DF8C RCALL _Delay
00C7 9508 RET
_main:
temp --> Y+0
j --> Y+1
i --> Y+1
00C8 97EF SBIW R28,0x3F
00C9 9721 SBIW R28,1
(0156) }
(0157) //------------------------------主函数------------------------------------------
(0158) void main(void)
(0159) {
(0160) uint i,j,temp[32];
(0161) DDRD=0x32; //
00CA E382 LDI R24,0x32
00CB BB81 OUT 0x11,R24
(0162) DDRB=0xB3; //
00CC EB83 LDI R24,0xB3
00CD BB87 OUT 0x17,R24
(0163) DDRA=0x8f; //
00CE E88F LDI R24,0x8F
00CF BB8A OUT 0x1A,R24
(0164) PORTA = 0xff;
00D0 EF8F LDI R24,0xFF
00D1 BB8B OUT 0x1B,R24
(0165) Spi_initial();
00D2 DF96 RCALL _Spi_initial
(0166) system_Init();
00D3 DF9D RCALL _system_Init
(0167) Config905();
00D4 DFA5 RCALL _Config905
(0168) Delay(500);
00D5 EF04 LDI R16,0xF4
00D6 E011 LDI R17,1
00D7 DF7B RCALL _Delay
00D8 C03B RJMP 0x0114
(0169) while(1)
(0170) {
(0171) //TX();
(0172)
(0173) //------------------------------------------------------------------------------
(0174) if((PINA & 0x10) == 0x00) //有键按下
00D9 99CC SBIC 0x19,4
00DA C011 RJMP 0x00EC
(0175) {
(0176) while(!(PINA & 0x10)); //等待按键松开 RED
00DB 9BCC SBIS 0x19,4
00DC CFFE RJMP 0x00DB
(0177) TxRxBuf[0]=0x31;
00DD E381 LDI R24,0x31
00DE 9380006F STS TxRxBuf,R24
(0178) TxRxBuf[1]=0x31;
00E0 93800070 STS TxRxBuf+1,R24
(0179) TxRxBuf[2]=0x29;
00E2 E289 LDI R24,0x29
00E3 93800071 STS TxRxBuf+2,R24
(0180) TxRxBuf[3]=0x30;
00E5 E380 LDI R24,0x30
00E6 93800072 STS TxRxBuf+3,R24
(0181)
(0182) //------------------------------------------------------------------------------
(0183) SetTxMode();
00E8 DFD9 RCALL _SetTxMode
(0184) TxPacket(TxRxBuf);
00E9 E60F LDI R16,0x6F
00EA E010 LDI R17,0
00EB DFA5 RCALL _TxPacket
(0185) }
(0186) //------------------------------------------------------------------------------
(0187) if((PINA & 0x20) == 0x00) //有键按下
00EC 99CD SBIC 0x19,5
00ED C012 RJMP 0x0100
(0188) {
(0189) while(!(PINA & 0x20)); //等待按键松开GREEN
00EE 9BCD SBIS 0x19,5
00EF CFFE RJMP 0x00EE
(0190) TxRxBuf[0]=0x30;
00F0 E380 LDI R24,0x30
00F1 9380006F STS TxRxBuf,R24
(0191) TxRxBuf[1]=0x31;
00F3 E381 LDI R24,0x31
00F4 93800070 STS TxRxBuf+1,R24
(0192) TxRxBuf[2]=0x32;
00F6 E382 LDI R24,0x32
00F7 93800071 STS TxRxBuf+2,R24
(0193) TxRxBuf[3]=0x29;
00F9 E289 LDI R24,0x29
00FA 93800072 STS TxRxBuf+3,R24
(0194) //------------------------------------------------------------------------------
(0195) SetTxMode(); // 设置进入发送状态
00FC DFC5 RCALL _SetTxMode
(0196) TxPacket(TxRxBuf); // 装载待发送数据
00FD E60F LDI R16,0x6F
00FE E010 LDI R17,0
00FF DF91 RCALL _TxPacket
(0197) }
(0198) //------------------------------------------------------------------------------
(0199) if((PINA & 0x40) == 0x00) //有键按下
0100 99CE SBIC 0x19,6
0101 C012 RJMP 0x0114
(0200) {
(0201) while(!(PINA & 0x40)); //等待按键松开GREEN
0102 9BCE SBIS 0x19,6
0103 CFFE RJMP 0x0102
(0202) TxRxBuf[0]=0x29;
0104 E289 LDI R24,0x29
0105 9380006F STS TxRxBuf,R24
(0203) TxRxBuf[1]=0x30;
0107 E380 LDI R24,0x30
0108 93800070 STS TxRxBuf+1,R24
(0204) TxRxBuf[2]=0x31;
010A E381 LDI R24,0x31
010B 93800071 STS TxRxBuf+2,R24
(0205) TxRxBuf[3]=0x32;
010D E382 LDI R24,0x32
010E 93800072 STS TxRxBuf+3,R24
(0206) //------------------------------------------------------------------------------
(0207) SetTxMode(); // 设置进入发送状态
0110 DFB1 RCALL _SetTxMode
(0208) TxPacket(TxRxBuf); // 装载待发送数据
FILE: <library>
0111 E60F LDI R16,0x6F
0112 E010 LDI R17,0
0113 DF7D RCALL _TxPacket
0114 CFC4 RJMP 0x00D9
0115 96EF ADIW R28,0x3F
0116 9621 ADIW R28,1
0117 9508 RET
pop_gset2:
0118 E0E2 LDI R30,2
0119 940C0127 JMP pop
push_gset5:
011B 92FA ST R15,-Y
011C 92EA ST R14,-Y
push_gset4:
011D 92DA ST R13,-Y
011E 92CA ST R12,-Y
push_gset3:
011F 92BA ST R11,-Y
0120 92AA ST R10,-Y
push_gset2:
0121 937A ST R23,-Y
0122 936A ST R22,-Y
push_gset1:
0123 935A ST R21,-Y
0124 934A ST R20,-Y
0125 9508 RET
pop_gset1:
0126 E0E1 LDI R30,1
pop:
0127 9149 LD R20,Y+
0128 9159 LD R21,Y+
0129 FDE0 SBRC R30,0
012A 9508 RET
012B 9169 LD R22,Y+
012C 9179 LD R23,Y+
012D FDE1 SBRC R30,1
012E 9508 RET
012F 90A9 LD R10,Y+
0130 90B9 LD R11,Y+
0131 FDE2 SBRC R30,2
0132 9508 RET
0133 90C9 LD R12,Y+
0134 90D9 LD R13,Y+
0135 FDE3 SBRC R30,3
0136 9508 RET
0137 90E9 LD R14,Y+
0138 90F9 LD R15,Y+
0139 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -