📄 jfp_fasong.s
字号:
movw R22,R16
.dbline -1
.dbline 128
; }
; //--------------------------------NRF905待发数据打包----------------------------
; void TxPacket(uchar TxBUF[4])
; {
.dbline 130
; uchar i;
; Low_nrf905_CSN; // 使能Spi,允许对nrf905进行读写操作
cbi 0x18,4
.dbline 131
; Delay(1);
ldi R16,1
ldi R17,0
xcall _Delay
.dbline 132
; SpiReadSpiWrite(WTP); // 写数据前先写写数据命令
ldi R16,32
xcall _SpiReadSpiWrite
.dbline 133
; for (i=0;i<4;i++)
clr R20
xjmp L24
L21:
.dbline 134
.dbline 135
mov R30,R20
clr R31
add R30,R22
adc R31,R23
ldd R16,z+0
xcall _SpiReadSpiWrite
.dbline 136
L22:
.dbline 133
inc R20
L24:
.dbline 133
cpi R20,4
brlo L21
.dbline 137
; {
; SpiReadSpiWrite(TxBUF[i]); // 待发送的32字节数据
; }
; Hign_nrf905_CSN;
sbi 0x18,4
.dbline 138
; Delay(1); // 关闭Spi,不允许对nrf905进行读写操作
ldi R16,1
ldi R17,0
xcall _Delay
.dbline 139
; Low_nrf905_CSN; // 使能Spi
cbi 0x18,4
.dbline 140
; SpiReadSpiWrite(WTA); // 写地址前首先先写地址命令
ldi R16,34
xcall _SpiReadSpiWrite
.dbline 141
; for (i=0;i<4;i++) // 写 4 bytes 地址
clr R20
xjmp L28
L25:
.dbline 142
.dbline 143
ldi R24,<_TxAddress
ldi R25,>_TxAddress
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R16,z+0
xcall _SpiReadSpiWrite
.dbline 144
L26:
.dbline 141
inc R20
L28:
.dbline 141
cpi R20,4
brlo L25
.dbline 145
; {
; SpiReadSpiWrite(TxAddress[i]);
; }
; Hign_nrf905_CSN; // 关闭Spi
sbi 0x18,4
.dbline 146
; Hign_nrf905_TRX_CE; // Set TRX_CE high,start Tx data transmission
sbi 0x12,5
.dbline 147
; Delay(1); // 等待DR变高
ldi R16,1
ldi R17,0
xcall _Delay
.dbline 148
; Low_nrf905_TRX_CE; // 设置TRX_CE=0
cbi 0x12,5
.dbline -2
L20:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r TxBUF 22 pc
.dbend
.dbfunc e SetTxMode _SetTxMode fV
.even
_SetTxMode::
.dbline -1
.dbline 152
; }
; //-------------------------------发送模式激发-----------------------------------
; void SetTxMode(void)
; {
.dbline 153
; Low_nrf905_TRX_CE; //
cbi 0x12,5
.dbline 154
; Hign_nrf905_TX_EN; //发送使能
sbi 0x18,0
.dbline 155
; Delay(2); // delay for mode change(>=650us)根据晶振不同要改变
ldi R16,2
ldi R17,0
xcall _Delay
.dbline -2
L29:
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
; temp -> y+0
; j -> <dead>
; i -> <dead>
.even
_main::
sbiw R28,63
sbiw R28,1 ; offset = 64
.dbline -1
.dbline 159
; }
; //------------------------------主函数------------------------------------------
; void main(void)
; {
.dbline 161
; uint i,j,temp[32];
; DDRD=0x32; //
ldi R24,50
out 0x11,R24
.dbline 162
; DDRB=0xB3; //
ldi R24,179
out 0x17,R24
.dbline 163
; DDRA=0x8f; //
ldi R24,143
out 0x1a,R24
.dbline 164
; PORTA = 0xff;
ldi R24,255
out 0x1b,R24
.dbline 165
; Spi_initial();
xcall _Spi_initial
.dbline 166
; system_Init();
xcall _system_Init
.dbline 167
; Config905();
xcall _Config905
.dbline 168
; Delay(500);
ldi R16,500
ldi R17,1
xcall _Delay
xjmp L32
L31:
.dbline 170
; while(1)
; {
.dbline 174
; //TX();
;
; //------------------------------------------------------------------------------
; if((PINA & 0x10) == 0x00) //有键按下
sbic 0x19,4
rjmp L34
.dbline 175
; {
L36:
.dbline 176
L37:
.dbline 176
; while(!(PINA & 0x10)); //等待按键松开 RED
sbis 0x19,4
rjmp L36
.dbline 177
; TxRxBuf[0]=0x31;
ldi R24,49
sts _TxRxBuf,R24
.dbline 178
; TxRxBuf[1]=0x31;
sts _TxRxBuf+1,R24
.dbline 179
; TxRxBuf[2]=0x29;
ldi R24,41
sts _TxRxBuf+2,R24
.dbline 180
; TxRxBuf[3]=0x30;
ldi R24,48
sts _TxRxBuf+3,R24
.dbline 183
;
; //------------------------------------------------------------------------------
; SetTxMode();
xcall _SetTxMode
.dbline 184
; TxPacket(TxRxBuf);
ldi R16,<_TxRxBuf
ldi R17,>_TxRxBuf
xcall _TxPacket
.dbline 185
; }
L34:
.dbline 187
; //------------------------------------------------------------------------------
; if((PINA & 0x20) == 0x00) //有键按下
sbic 0x19,5
rjmp L42
.dbline 188
; {
L44:
.dbline 189
L45:
.dbline 189
; while(!(PINA & 0x20)); //等待按键松开GREEN
sbis 0x19,5
rjmp L44
.dbline 190
; TxRxBuf[0]=0x30;
ldi R24,48
sts _TxRxBuf,R24
.dbline 191
; TxRxBuf[1]=0x31;
ldi R24,49
sts _TxRxBuf+1,R24
.dbline 192
; TxRxBuf[2]=0x32;
ldi R24,50
sts _TxRxBuf+2,R24
.dbline 193
; TxRxBuf[3]=0x29;
ldi R24,41
sts _TxRxBuf+3,R24
.dbline 195
; //------------------------------------------------------------------------------
; SetTxMode(); // 设置进入发送状态
xcall _SetTxMode
.dbline 196
; TxPacket(TxRxBuf); // 装载待发送数据
ldi R16,<_TxRxBuf
ldi R17,>_TxRxBuf
xcall _TxPacket
.dbline 197
; }
L42:
.dbline 199
; //------------------------------------------------------------------------------
; if((PINA & 0x40) == 0x00) //有键按下
sbic 0x19,6
rjmp L50
.dbline 200
; {
L52:
.dbline 201
L53:
.dbline 201
; while(!(PINA & 0x40)); //等待按键松开GREEN
sbis 0x19,6
rjmp L52
.dbline 202
; TxRxBuf[0]=0x29;
ldi R24,41
sts _TxRxBuf,R24
.dbline 203
; TxRxBuf[1]=0x30;
ldi R24,48
sts _TxRxBuf+1,R24
.dbline 204
; TxRxBuf[2]=0x31;
ldi R24,49
sts _TxRxBuf+2,R24
.dbline 205
; TxRxBuf[3]=0x32;
ldi R24,50
sts _TxRxBuf+3,R24
.dbline 207
; //------------------------------------------------------------------------------
; SetTxMode(); // 设置进入发送状态
xcall _SetTxMode
.dbline 208
; TxPacket(TxRxBuf); // 装载待发送数据
ldi R16,<_TxRxBuf
ldi R17,>_TxRxBuf
xcall _TxPacket
.dbline 209
; }
L50:
.dbline 210
L32:
.dbline 169
xjmp L31
X1:
.dbline -2
L30:
adiw R28,63
adiw R28,1 ; offset = 64
.dbline 0 ; func end
ret
.dbsym l temp 0 A[64:32]i
.dbsym l j 1 i
.dbsym l i 1 i
.dbend
.area bss(ram, con, rel)
.dbfile F:\开发板配套资料\JASK3000软件开发包\遥控开关\NRF905_发送\jfp_fasong.c
_TxRxBuf::
.blkb 4
.dbsym e TxRxBuf _TxRxBuf A[4:4]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -