📄 main.s
字号:
; accept_time=0;
clr R2
clr R3
sts _accept_time+1,R3
sts _accept_time,R2
.dbline 157
; Buffer[0]=80;
ldi R24,80
sts _Buffer,R24
.dbline 158
; Buffer[1]=01;
ldi R24,1
sts _Buffer+1,R24
.dbline 159
; TX_Mode(); // set TX Mode and transmitting
rcall _TX_Mode
.dbline 160
; Buffer[0]=80;
ldi R24,80
sts _Buffer,R24
.dbline 161
; Buffer[1]=01;
ldi R24,1
sts _Buffer+1,R24
.dbline 162
; TX_Mode(); // set TX Mode and transmitting
rcall _TX_Mode
.dbline 163
; delayms(100);
ldi R16,100
ldi R17,0
rcall _delayms
.dbline 164
; RX_Mode();
rcall _RX_Mode
.dbline 165
; Buffer[0]=00;
clr R2
sts _Buffer,R2
.dbline 166
; Buffer[1]=00;
sts _Buffer+1,R2
.dbline 167
; }
L14:
.dbline 168
; if(accept_flag=1)
ldi R24,1
sts _accept_flag,R24
tst R24
brne X14
rjmp L19
X14:
X6:
.dbline 169
; {
.dbline 170
; accept_time++;
lds R24,_accept_time
lds R25,_accept_time+1
adiw R24,1
sts _accept_time+1,R25
sts _accept_time,R24
.dbline 172
; // delayms(100);
; if(accept_time>10000)
ldi R24,10000
ldi R25,39
lds R2,_accept_time
lds R3,_accept_time+1
cp R24,R2
cpc R25,R3
brsh L21
X7:
.dbline 173
; {
.dbline 174
; accept_flag=0;
clr R2
sts _accept_flag,R2
.dbline 175
; accept_time=0;
clr R3
sts _accept_time+1,R3
sts _accept_time,R2
.dbline 176
; }
L21:
.dbline 179
; //-------------------------------------------
; // if(!(PINB& 0x01))
; if(!(PINB& 0x04))
sbic 0x3,2
rjmp L23
X8:
.dbline 180
; {//nRF24L01 接收数据
.dbline 181
; key_debug=SPI_Read(STATUS); // read register STATUS's value
ldi R16,7
rcall _SPI_Read
sts _key_debug,R16
.dbline 182
; if(key_debug&RX_DR) // if renRF24L01_CEive data ready (RX_DR) interrupt
sbrs R16,6
rjmp L25
X9:
.dbline 183
; SPI_Read_Buf(RD_RX_PLOAD,Buffer,TX_PLOAD_WIDTH);// read renRF24L01_CEive payload from RX_FIFO buffer
ldi R24,20
std y+0,R24
ldi R18,<_Buffer
ldi R19,>_Buffer
ldi R16,97
rcall _SPI_Read_Buf
L25:
.dbline 184
; if(key_debug&MAX_RT) SPI_RW_Reg(FLUSH_TX,0);
lds R2,_key_debug
sbrs R2,4
rjmp L27
X10:
.dbline 184
clr R18
ldi R16,225
rcall _SPI_RW_Reg
L27:
.dbline 185
; SPI_RW_Reg(WRITE_REG+STATUS,0xff);// clear RX_DR or TX_DS or MAX_RT interrupt flag
ldi R18,255
ldi R16,39
rcall _SPI_RW_Reg
.dbline 186
; RX_Mode();
rcall _RX_Mode
.dbline 187
; if((Buffer[0]==80)&&(Buffer[1]==02))//data accept
lds R24,_Buffer
cpi R24,80
brne L29
X11:
lds R24,_Buffer+1
cpi R24,2
brne L29
X12:
.dbline 188
; {
.dbline 189
; accept_flag=1;
ldi R24,1
sts _accept_flag,R24
.dbline 190
; PORTC = 0x02;
ldi R24,2
out 0x8,R24
.dbline 191
; delayms(5000); //延时10ms*10=100ms
ldi R16,5000
ldi R17,19
rcall _delayms
.dbline 192
; delayms(5000); //延时10ms*10=100ms
ldi R16,5000
ldi R17,19
rcall _delayms
.dbline 193
; PORTC = 0x00;
clr R2
out 0x8,R2
.dbline 194
; }
L29:
.dbline 195
; }
L23:
.dbline 197
; //-------------------------------------------
; }
L19:
.dbline 198
; }
L3:
.dbline 134
rjmp L2
X13:
.dbline -2
L1:
.dbline 0 ; func end
adiw R28,1
ret
.dbsym r Get_SO 10 c
.dbend
.dbfunc e init_CPU _init_CPU fV
.even
_init_CPU::
.dbline -1
.dbline 207
;
;
; }
; /*-----------------------------------------------------------------------------
; Module: init_CPU
; Function: Initialization of CPU
; ------------------------------------------------------------------------------*/
; void init_CPU (void)
; {
.dbline 208
; MCUCR = 0x00; //
clr R2
out 0x35,R2
.dbline 209
; EICRA = 0x00; //extended ext ints
sts 105,R2
.dbline 210
; EIMSK = 0x00;
out 0x1d,R2
.dbline 212
;
; TIMSK0 = 0x01; //timer 0 interrupt sources
ldi R24,1
sts 110,R24
.dbline 213
; TIMSK1 = 0x00; //timer 1 interrupt sources
sts 111,R2
.dbline 214
; TIMSK2 = 0x00; //timer 2 interrupt sources
sts 112,R2
.dbline 215
; CLI(); //disable all interrupts
cli
.dbline 216
; NOP();
nop
.dbline 217
; PORTB = 0x81;
ldi R24,129
out 0x5,R24
.dbline 218
; DDRB = 0xf3;
ldi R24,243
out 0x4,R24
.dbline 219
; PORTD = 0x80;
ldi R24,128
out 0xb,R24
.dbline 220
; DDRD = 0xff;
ldi R24,255
out 0xa,R24
.dbline 221
; PORTC = 0x80;
ldi R24,128
out 0x8,R24
.dbline 222
; DDRC = 0x78;
ldi R24,120
out 0x7,R24
.dbline 223
; nRF24L01_CEL;
cbi 0xb,7
.dbline 224
; delay();
rcall _delay
.dbline 225
; nRF24L01_CSNH; // Spi disable
sbi 0xb,6
.dbline 226
; delay();
rcall _delay
.dbline 227
; nRF24L01_SCKL;
cbi 0x5,1
.dbline 228
; delay();
rcall _delay
.dbline -2
L32:
.dbline 0 ; func end
ret
.dbend
.dbfunc e delay _delay fV
.even
_delay::
.dbline -1
.dbline 231
; }
; void delay(void)//
; {
.dbline 232
; NOP();
nop
.dbline 233
; NOP();
nop
.dbline 234
; NOP();
nop
.dbline 235
; NOP();
nop
.dbline 236
; NOP();
nop
.dbline 237
; NOP();
nop
.dbline -2
L33:
.dbline 0 ; func end
ret
.dbend
.dbfunc e delayms _delayms fV
; dly -> R16,R17
.even
_delayms::
.dbline -1
.dbline 240
; }
; void delayms(unsigned short dly)//
; {
.dbline 241
; for(;dly>0;dly--) ;
rjmp L38
L35:
.dbline 241
L36:
.dbline 241
subi R16,1
sbci R17,0
L38:
.dbline 241
cpi R16,0
cpc R16,R17
brne L35
X15:
.dbline -2
L34:
.dbline 0 ; func end
ret
.dbsym r dly 16 s
.dbend
.dbfunc e clear_buf _clear_buf fV
; number -> R18
; ptr -> R16,R17
.even
_clear_buf::
.dbline -1
.dbline 245
; }
;
; void clear_buf(unsigned char *ptr,unsigned char number)//清零buffer,指定字节个数
; {
.dbline 246
; for (;number>0;number--) *ptr++=0;
rjmp L43
L40:
.dbline 246
clr R2
movw R30,R16
st Z+,R2
movw R16,R30
L41:
.dbline 246
dec R18
L43:
.dbline 246
ldi R24,0
cp R24,R18
brlo L40
X16:
.dbline -2
L39:
.dbline 0 ; func end
ret
.dbsym r number 18 c
.dbsym r ptr 16 pc
.dbend
.dbfunc e SPI_RW _SPI_RW fc
; bit_ctr -> R22
; byte -> R20
.even
_SPI_RW::
rcall push_xgsetF000
mov R20,R16
.dbline -1
.dbline 257
; }
; //------------------------------------------------------
; /**************************************************
; Function: SPI_RW();
;
; Description:
; Writes one byte to nRF24L01, and return the byte read
; from nRF24L01 during write, according to SPI protocol */
; /**************************************************/
; unsigned char SPI_RW(unsigned char byte)
; {
.dbline 259
; unsigned char bit_ctr;
; for(bit_ctr=0;bit_ctr<8;bit_ctr++) // output 8-bit
clr R22
rjmp L48
L45:
.dbline 260
; {
.dbline 261
; if(byte & 0x80)
sbrs R20,7
rjmp L49
X17:
.dbline 262
; nRF24L01_MOSIH;
sbi 0x5,0
rjmp L50
L49:
.dbline 264
; else
; nRF24L01_MOSIL;
cbi 0x5,0
L50:
.dbline 265
; delay();
rcall _delay
.dbline 266
; byte = (byte << 1); // shift next bit into MSB..
lsl R20
.dbline 267
; nRF24L01_SCKH;
sbi 0x5,1
.dbline 268
; delay();
rcall _delay
.dbline 269
; if(PINB&0x08) byte |= 1;
sbis 0x3,3
rjmp L51
X18:
.dbline 269
ori R20,1
L51:
.dbline 270
; nRF24L01_SCKL;
cbi 0x5,1
.dbline 271
; delay();
rcall _delay
.dbline 272
; }
L46:
.dbline 259
inc R22
L48:
.dbline 259
cpi R22,8
brlo L45
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -