📄 2.4g+̤
字号:
0002 ; #define key1 BIT4
0002 ; #define key2 BIT3
0002 ; #define key3 BIT2
0002 ; #define key4 BIT5
0002 ; #define key5 BIT4
0002 ; #define key6 BIT3
0002 ; #define key7 BIT2
0002 ; #define key8 BIT1
0002 ; #define bit20ms BIT0
0002 ; unsigned char flag;
0002 ; unsigned char key1_pulse;
0002 ; unsigned char key2_pulse;
0002 ; unsigned char key3_pulse;
0002 ; unsigned char key4_pulse;
0002 ; unsigned char key5_pulse;
0002 ; unsigned char key6_pulse;
0002 ; unsigned char key7_pulse;
0002 ; unsigned char key8_pulse;
0002 ; unsigned char key1_flag;
0002 ; unsigned char key2_flag;
0002 ; unsigned char key3_flag;
0002 ; unsigned char key4_flag;
0002 ; unsigned char key5_flag;
0002 ; unsigned char key6_flag;
0002 ; unsigned char key7_flag;
0002 ; unsigned char key8_flag;
0002 ; unsigned char key8_long_flag;
0002 ; unsigned char send_flag;
0002 ; unsigned char key1_time;
0002 ; unsigned char key2_time;
0002 ; unsigned char key3_time;
0002 ; unsigned char key4_time;
0002 ; unsigned char key5_time;
0002 ; unsigned char key6_time;
0002 ; unsigned char key7_time;
0002 ; unsigned char key8_time;
0002 ; //-----------------------------------------------------------------------------
0002 ; void main(void)
0002 ; {
0002 .dbline 159
0002 ; unsigned char Get_SO=0;
0002 4427 clr R20
0004 .dbline 160
0004 ; CLI(); /* global interrupt disable */
0004 F894 cli
0006 .dbline 161
0006 ; init_CPU ();
0006 8DD0 rcall _init_CPU
0008 .dbline 162
0008 ; delayms(100); //延时10ms*10=100ms
0008 04E6 ldi R16,100
000A 10E0 ldi R17,0
000C B2D0 rcall _delayms
000E .dbline 163
000E ; delayms(100); //延时10ms*10=100ms
000E 04E6 ldi R16,100
0010 10E0 ldi R17,0
0012 AFD0 rcall _delayms
0014 .dbline 164
0014 ; timer0_init();
0014 70D1 rcall _timer0_init
0016 .dbline 165
0016 ; RX_Mode();
0016 25D1 rcall _RX_Mode
0018 .dbline 166
0018 ; SEI();
0018 7894 sei
001A 79C0 rjmp L3
001C L2:
001C .dbline 168
001C ; while(1)
001C ; {
001C .dbline 170
001C ; // if(!(PINB& 0x01))
001C ; WDR();
001C A895 wdr
001E .dbline 171
001E ; if(!(PINB& nRF24L01_IRQ))
001E 1A99 sbic 0x3,2
0020 22C0 rjmp L5
0022 .dbline 172
0022 ; {//nRF24L01 接收数据
0022 .dbline 173
0022 ; key_debug=SPI_Read(STATUS); // read register STATUS's value
0022 07E0 ldi R16,7
0024 DED0 rcall _SPI_Read
0026 00931B00 sts _key_debug,R16
002A .dbline 174
002A ; if(key_debug&RX_DR) // if renRF24L01_CEive data ready (RX_DR) interrupt
002A 06FF sbrs R16,6
002C 06C0 rjmp L7
002E .dbline 175
002E ; SPI_Read_Buf(RD_RX_PLOAD,Buffer,TX_PLOAD_WIDTH);// read renRF24L01_CEive payload from RX_FIFO buffer
002E 84E1 ldi R24,20
0030 8883 std y+0,R24
0032 20E0 ldi R18,<_Buffer
0034 30E0 ldi R19,>_Buffer
0036 01E6 ldi R16,97
0038 E2D0 rcall _SPI_Read_Buf
003A L7:
003A .dbline 176
003A ; if(key_debug&MAX_RT) SPI_RW_Reg(FLUSH_TX,0);
003A 20901B00 lds R2,_key_debug
003E 24FE sbrs R2,4
0040 03C0 rjmp L9
0042 .dbline 176
0042 2227 clr R18
0044 01EE ldi R16,225
0046 BED0 rcall _SPI_RW_Reg
0048 L9:
0048 .dbline 177
0048 ; SPI_RW_Reg(WRITE_REG+STATUS,0xff);// clear RX_DR or TX_DS or MAX_RT interrupt flag
0048 2FEF ldi R18,255
004A 07E2 ldi R16,39
004C BBD0 rcall _SPI_RW_Reg
004E .dbline 178
004E ; RX_Mode();
004E 09D1 rcall _RX_Mode
0050 .dbline 179
0050 ; if((Buffer[0]==80)&&(Buffer[1]==01))//data accept
0050 80910000 lds R24,_Buffer
0054 8035 cpi R24,80
0056 39F4 brne L11
0058 80910100 lds R24,_Buffer+1
005C 8130 cpi R24,1
005E 19F4 brne L11
0060 .dbline 180
0060 ; {
0060 .dbline 181
0060 ; accept_flag=1;
0060 81E0 ldi R24,1
0062 80934500 sts _accept_flag,R24
0066 .dbline 182
0066 ; }
0066 L11:
0066 .dbline 183
0066 ; }
0066 L5:
0066 .dbline 184
0066 ; if(send_flag==1)//data send
0066 80914600 lds R24,_send_flag
006A 8130 cpi R24,1
006C 81F4 brne L14
006E .dbline 185
006E ; {
006E .dbline 186
006E ; Buffer[0]=80;
006E 80E5 ldi R24,80
0070 80930000 sts _Buffer,R24
0074 .dbline 187
0074 ; Buffer[1]=02;
0074 82E0 ldi R24,2
0076 80930100 sts _Buffer+1,R24
007A .dbline 188
007A ; TX_Mode(); // set TX Mode and transmitting
007A 12D1 rcall _TX_Mode
007C .dbline 189
007C ; delayms(100);
007C 04E6 ldi R16,100
007E 10E0 ldi R17,0
0080 78D0 rcall _delayms
0082 .dbline 190
0082 ; RX_Mode();
0082 EFD0 rcall _RX_Mode
0084 .dbline 191
0084 ; Buffer[0]=00;
0084 2224 clr R2
0086 20920000 sts _Buffer,R2
008A .dbline 192
008A ; Buffer[1]=00;
008A 20920100 sts _Buffer+1,R2
008E .dbline 193
008E ; }
008E L14:
008E .dbline 195
008E ; //========================================数据一直发送
008E ; if(key8_long_flag==1)//data send
008E 80910800 lds R24,_key8_long_flag
0092 8130 cpi R24,1
0094 81F4 brne L18
0096 .dbline 196
0096 ; {
0096 .dbline 197
0096 ; Buffer[0]=80;
0096 80E5 ldi R24,80
0098 80930000 sts _Buffer,R24
009C .dbline 198
009C ; Buffer[1]=02;
009C 82E0 ldi R24,2
009E 80930100 sts _Buffer+1,R24
00A2 .dbline 199
00A2 ; TX_Mode(); // set TX Mode and transmitting
00A2 FED0 rcall _TX_Mode
00A4 .dbline 200
00A4 ; delayms(100);
00A4 04E6 ldi R16,100
00A6 10E0 ldi R17,0
00A8 64D0 rcall _delayms
00AA .dbline 201
00AA ; RX_Mode();
00AA DBD0 rcall _RX_Mode
00AC .dbline 202
00AC ; Buffer[0]=00;
00AC 2224 clr R2
00AE 20920000 sts _Buffer,R2
00B2 .dbline 203
00B2 ; Buffer[1]=00;
00B2 20920100 sts _Buffer+1,R2
00B6 .dbline 204
00B6 ; }
00B6 L18:
00B6 .dbline 206
00B6 ; //========================================数据一直发送
00B6 ; if(send_flag==1)
00B6 80914600 lds R24,_send_flag
00BA 8130 cpi R24,1
00BC D1F4 brne L22
00BE .dbline 207
00BE ; {
00BE .dbline 208
00BE ; accept_time++;
00BE 80914700 lds R24,_accept_time
00C2 90914800 lds R25,_accept_time+1
00C6 0196 adiw R24,1
00C8 90934800 sts _accept_time+1,R25
00CC 80934700 sts _accept_time,R24
00D0 .dbline 209
00D0 ; if(accept_time>30)
00D0 8EE1 ldi R24,30
00D2 90E0 ldi R25,0
00D4 20904700 lds R2,_accept_time
00D8 30904800 lds R3,_accept_time+1
00DC 8215 cp R24,R2
00DE 9305 cpc R25,R3
00E0 40F4 brsh L24
00E2 .dbline 210
00E2 ; {
00E2 .dbline 211
00E2 ; send_flag=0;
00E2 2224 clr R2
00E4 20924600 sts _send_flag,R2
00E8 .dbline 212
00E8 ; accept_time=0;
00E8 3324 clr R3
00EA 30924800 sts _accept_time+1,R3
00EE 20924700 sts _accept_time,R2
00F2 .dbline 213
00F2 ; }
00F2 L24:
00F2 .dbline 214
00F2 ; }
00F2 L22:
00F2 .dbline 215
00F2 ; if(accept_flag==1)
00F2 80914500 lds R24,_accept_flag
00F6 8130 cpi R24,1
00F8 51F4 brne L26
00FA .dbline 216
00FA ; {
00FA .dbline 217
00FA ; accept_flag=0;
00FA 2224 clr R2
00FC 20924500 sts _accept_flag,R2
0100 .dbline 218
0100 ; PORTB = 0x80;
0100 80E8 ldi R24,128
0102 85B9 out 0x5,R24
0104 .dbline 219
0104 ; delayms(5000); //延时10ms*10=100ms
0104 08E8 ldi R16,5000
0106 13E1 ldi R17,19
0108 34D0 rcall _delayms
010A .dbline 220
010A ; PORTB = 0x00;
010A 2224 clr R2
010C 25B8 out 0x5,R2
010E .dbline 221
010E ; }
010E L26:
010E .dbline 222
010E L3:
010E .dbline 167
010E 86CF rjmp L2
0110 X0:
0110 .dbline -2
0110 L1:
0110 2196 adiw R28,1
0112 .dbline 0 ; func end
0112 0895 ret
0114 .dbsym r Get_SO 20 c
0114 .dbend
0114 .dbfunc e nrf24l01init _nrf24l01init fV
.even
0114 _nrf24l01init::
0114 .dbline -1
0114 .dbline 227
0114 ; }
0114 ;
0114 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -