⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nrf2401.txt

📁 STM32+ov7670
💻 TXT
📖 第 1 页 / 共 2 页
字号:
                  SetRxMode PROC
;;;136    void SetRxMode(void)
000284  b510              PUSH     {r4,lr}
;;;137    {
;;;138    	//NRF_DDR|=((1<<CS)|(1<<CE)|(1<<PWR_UP)|(1<<DATA)|(1<<CLK1));
;;;139    	NRF_DDR &= 0xff000000;						//PA0-5
000286  4860              LDR      r0,|L1.1032|
000288  6800              LDR      r0,[r0,#0]
00028a  f000407f          AND      r0,r0,#0xff000000
00028e  495c              LDR      r1,|L1.1024|
000290  f8c10800          STR      r0,[r1,#0x800]
;;;140    	NRF_DDR |= 0x00333333;						//推挽输出
000294  485c              LDR      r0,|L1.1032|
000296  6800              LDR      r0,[r0,#0]
000298  495d              LDR      r1,|L1.1040|
00029a  ea400001          ORR      r0,r0,r1
00029e  4958              LDR      r1,|L1.1024|
0002a0  f8c10800          STR      r0,[r1,#0x800]
;;;141    	NRF_PORT |= 0x003F;					
0002a4  4608              MOV      r0,r1
0002a6  f8d0080c          LDR      r0,[r0,#0x80c]
0002aa  f040003f          ORR      r0,r0,#0x3f
0002ae  f8c1080c          STR      r0,[r1,#0x80c]
;;;142    	//设置为配置模式	
;;;143    	//PWR_UP = 1;		
;;;144    	//CE=0;				
;;;145    	//CS=1;				
;;;146    	PWR_UP_SET();
0002b2  4608              MOV      r0,r1
0002b4  f8d0080c          LDR      r0,[r0,#0x80c]
0002b8  f0400001          ORR      r0,r0,#1
0002bc  f8c1080c          STR      r0,[r1,#0x80c]
;;;147    	CE_CLR();
0002c0  4608              MOV      r0,r1
0002c2  f8d0080c          LDR      r0,[r0,#0x80c]
0002c6  f0200002          BIC      r0,r0,#2
0002ca  f8c1080c          STR      r0,[r1,#0x80c]
;;;148    	CS_SET();
0002ce  4608              MOV      r0,r1
0002d0  f8d0080c          LDR      r0,[r0,#0x80c]
0002d4  f0400004          ORR      r0,r0,#4
0002d8  4948              LDR      r1,|L1.1020|
0002da  6008              STR      r0,[r1,#0]
;;;149    	Delay_nUS(600);
0002dc  f44f7016          MOV      r0,#0x258
0002e0  f7fffffe          BL       delay_us
;;;150    	//配置寄存器0 字节RXEN 设置为 1:接收模式
;;;151    	//DATA =1;								
;;;152    	//CLK1=1;								
;;;153    	//CLK1=0;								
;;;154    	DATA_SET();
0002e4  4846              LDR      r0,|L1.1024|
0002e6  f8d0080c          LDR      r0,[r0,#0x80c]
0002ea  f0400020          ORR      r0,r0,#0x20
0002ee  4944              LDR      r1,|L1.1024|
0002f0  f8c1080c          STR      r0,[r1,#0x80c]
;;;155    	CLK1_SET();
0002f4  4608              MOV      r0,r1
0002f6  f8d0080c          LDR      r0,[r0,#0x80c]
0002fa  f0400010          ORR      r0,r0,#0x10
0002fe  f8c1080c          STR      r0,[r1,#0x80c]
;;;156    	CLK1_CLR();
000302  4608              MOV      r0,r1
000304  f8d0080c          LDR      r0,[r0,#0x80c]
000308  f0200010          BIC      r0,r0,#0x10
00030c  f8c1080c          STR      r0,[r1,#0x80c]
;;;157    	//设置为Activemodes(Rx)					
;;;158    	//CS=0;									
;;;159    	//CE=1;									
;;;160    	CS_CLR();
000310  4608              MOV      r0,r1
000312  f8d0080c          LDR      r0,[r0,#0x80c]
000316  f0200004          BIC      r0,r0,#4
00031a  f8c1080c          STR      r0,[r1,#0x80c]
;;;161    	CE_SET()
00031e  4608              MOV      r0,r1
000320  f8d0080c          LDR      r0,[r0,#0x80c]
000324  f0400002          ORR      r0,r0,#2
000328  4934              LDR      r1,|L1.1020|
00032a  6008              STR      r0,[r1,#0]
;;;162    	Delay_nUS(600);
00032c  f44f7016          MOV      r0,#0x258
000330  f7fffffe          BL       delay_us
;;;163    	
;;;164    	//NRF_DDR&=~(1<<DATA);
;;;165    	NRF2401_DATA_IN;
000334  4832              LDR      r0,|L1.1024|
000336  f8d00800          LDR      r0,[r0,#0x800]
00033a  f4200070          BIC      r0,r0,#0xf00000
00033e  4930              LDR      r1,|L1.1024|
000340  f8c10800          STR      r0,[r1,#0x800]
000344  4608              MOV      r0,r1
000346  f8d00800          LDR      r0,[r0,#0x800]
00034a  f4400000          ORR      r0,r0,#0x800000
00034e  f8c10800          STR      r0,[r1,#0x800]
000352  4608              MOV      r0,r1
000354  f8d0080c          LDR      r0,[r0,#0x80c]
000358  f0400020          ORR      r0,r0,#0x20
00035c  f8c1080c          STR      r0,[r1,#0x80c]
;;;166    }
000360  bd10              POP      {r4,pc}
;;;167    
                          ENDP

                  nRF2401_TxPacket PROC
;;;168    //nRF2401 数据发送函数			
;;;169    void nRF2401_TxPacket(unsigned char* p_TxBuf)
000362  b570              PUSH     {r4-r6,lr}
;;;170    {
000364  4605              MOV      r5,r0
;;;171    	unsigned char i = 0;
000366  2400              MOVS     r4,#0
;;;172    	static unsigned char TxAddress[]={0xcc,0xcc,0xcc,0xcc};//接收方通道硬件地址	
;;;173    	unsigned char variable2;
;;;174    	CE_SET();
000368  4824              LDR      r0,|L1.1020|
00036a  6800              LDR      r0,[r0,#0]
00036c  f0400002          ORR      r0,r0,#2
000370  4923              LDR      r1,|L1.1024|
000372  f8c1080c          STR      r0,[r1,#0x80c]
;;;175    	for (i=0;i< (ADDR_W/8);i++)				//写入接收地址(按字节对齐)			
000376  bf00              NOP      
000378  e006              B        |L1.904|
                  |L1.890|
;;;176    	{
;;;177    		variable2=TxAddress[i];
00037a  4827              LDR      r0,|L1.1048|
00037c  5d06              LDRB     r6,[r0,r4]
;;;178    		ByteWrite(variable2);
00037e  4630              MOV      r0,r6
000380  f7fffffe          BL       ByteWrite
000384  1c60              ADDS     r0,r4,#1              ;175
000386  b2c4              UXTB     r4,r0                 ;175
                  |L1.904|
000388  2c05              CMP      r4,#5                 ;175
00038a  dbf6              BLT      |L1.890|
;;;179    	}
;;;180    	for (i=0;i<(DATA1_W/8);i++)				//写入需要发送的数据(按字节对齐)	
00038c  2400              MOVS     r4,#0
00038e  e005              B        |L1.924|
                  |L1.912|
;;;181    	{
;;;182    		variable2 = p_TxBuf[i];
000390  5d2e              LDRB     r6,[r5,r4]
;;;183    		ByteWrite(variable2);
000392  4630              MOV      r0,r6
000394  f7fffffe          BL       ByteWrite
000398  1c60              ADDS     r0,r4,#1              ;180
00039a  b2c4              UXTB     r4,r0                 ;180
                  |L1.924|
00039c  2c0a              CMP      r4,#0xa               ;180
00039e  dbf7              BLT      |L1.912|
;;;184    	}
;;;185    	CE_CLR();								//CE=0; //CE 置低使发送有效			
0003a0  4816              LDR      r0,|L1.1020|
0003a2  6800              LDR      r0,[r0,#0]
0003a4  f0200002          BIC      r0,r0,#2
0003a8  4915              LDR      r1,|L1.1024|
0003aa  f8c1080c          STR      r0,[r1,#0x80c]
;;;186    	Delay_nUS(200);
0003ae  f04f00c8          MOV      r0,#0xc8
0003b2  f7fffffe          BL       delay_us
;;;187    }
0003b6  bd70              POP      {r4-r6,pc}
;;;188    
                          ENDP

                  nRF2401_RxPacket PROC
;;;191    //      1:接收到数据			
;;;192    unsigned char nRF2401_RxPacket(unsigned char* p_RxBuf)
0003b8  b510              PUSH     {r4,lr}
;;;193    {
0003ba  4603              MOV      r3,r0
;;;194    	unsigned char i = 0;
0003bc  2400              MOVS     r4,#0
;;;195    	//NRF_DDR &= ~(1<<DR1);
;;;196    	//DR1_SET();
;;;197    	NRF2401_DR1_IN;
0003be  4812              LDR      r0,|L1.1032|
0003c0  6800              LDR      r0,[r0,#0]
0003c2  f4204070          BIC      r0,r0,#0xf000
0003c6  490e              LDR      r1,|L1.1024|
0003c8  f8c10800          STR      r0,[r1,#0x800]
0003cc  4608              MOV      r0,r1
0003ce  f8d00800          LDR      r0,[r0,#0x800]
0003d2  f4404000          ORR      r0,r0,#0x8000
0003d6  f8c10800          STR      r0,[r1,#0x800]
0003da  4608              MOV      r0,r1
0003dc  f8d0080c          LDR      r0,[r0,#0x80c]
0003e0  f0400008          ORR      r0,r0,#8
0003e4  f8c1080c          STR      r0,[r1,#0x80c]
;;;198    	if(DR1_STATE)
0003e8  4806              LDR      r0,|L1.1028|
0003ea  6800              LDR      r0,[r0,#0]
0003ec  f0000008          AND      r0,r0,#8
0003f0  2808              CMP      r0,#8
0003f2  d11d              BNE      |L1.1072|
;;;199    	{
;;;200    		for (i=0; i<DATA1_W/8; i++)
0003f4  bf00              NOP      
0003f6  e017              B        |L1.1064|
                  |L1.1016|
                          DCD      Data_Buffer
                  |L1.1020|
                          DCD      0x4001080c
                  |L1.1024|
                          DCD      0x40010000
                  |L1.1028|
                          DCD      0x40010808
                  |L1.1032|
                          DCD      0x40010800
                  |L1.1036|
                          DCD      0x40021000
                  |L1.1040|
                          DCD      0x00333333
                  |L1.1044|
                          DCD      nRF2401_Conf
                  |L1.1048|
                          DCD      TxAddress
                  |L1.1052|
;;;201    		{
;;;202    			*p_RxBuf = ByteRead();
00041c  f7fffffe          BL       ByteRead
000420  7018              STRB     r0,[r3,#0]
;;;203    			p_RxBuf ++;
000422  1c5b              ADDS     r3,r3,#1
000424  1c60              ADDS     r0,r4,#1              ;200
000426  b2c4              UXTB     r4,r0                 ;200
                  |L1.1064|
000428  2c0a              CMP      r4,#0xa               ;200
00042a  dbf7              BLT      |L1.1052|
;;;204    		}
;;;205    		return 1;
00042c  2001              MOVS     r0,#1
                  |L1.1070|
;;;206    	}
;;;207    	return 0;
;;;208    }
00042e  bd10              POP      {r4,pc}
                  |L1.1072|
000430  2000              MOVS     r0,#0                 ;207
000432  e7fc              B        |L1.1070|
;;;209    //新增函数,功能上与UART模块部分
                          ENDP

                  Get_PC_2401_Rate PROC
;;;232    */
;;;233    unsigned char Get_PC_2401_Rate(long int* p_Rate)
000434  b570              PUSH     {r4-r6,lr}
;;;234    {
000436  4605              MOV      r5,r0
;;;235    	static unsigned char Temp_Array[30] = {0};
;;;236    	unsigned char i =0;
000438  2400              MOVS     r4,#0
;;;237    	long int Temp = 0;
00043a  2600              MOVS     r6,#0
;;;238    	static long int Temp_Rate = 0;
;;;239    	
;;;240    	static unsigned char ch_CMD = 0;
;;;241    	if(nRF2401_RxPacket(Temp_Array))
00043c  4815              LDR      r0,|L1.1172|
00043e  f7fffffe          BL       nRF2401_RxPacket
000442  b318              CBZ      r0,|L1.1164|
;;;242    	{
;;;243    		if((Temp_Array[0] == 0xaa)&&(Temp_Array[8] == 0x55))
000444  4813              LDR      r0,|L1.1172|
000446  7800              LDRB     r0,[r0,#0]  ; Temp_Array
000448  28aa              CMP      r0,#0xaa
00044a  d11c              BNE      |L1.1158|
00044c  4811              LDR      r0,|L1.1172|
00044e  7a00              LDRB     r0,[r0,#8]  ; Temp_Array
000450  2855              CMP      r0,#0x55
000452  d118              BNE      |L1.1158|
;;;244    		{
;;;245    			Temp_Rate = 0;
000454  2000              MOVS     r0,#0
000456  4910              LDR      r1,|L1.1176|
000458  6008              STR      r0,[r1,#0]  ; Temp_Rate
;;;246    			for(i=3; i<7; i++)
00045a  2403              MOVS     r4,#3
00045c  e00d              B        |L1.1146|
                  |L1.1118|
;;;247    			{
;;;248    				Temp = Temp_Array[i];
00045e  480d              LDR      r0,|L1.1172|
000460  5d06              LDRB     r6,[r0,r4]
;;;249    				Temp_Rate |= Temp_Array[i]<<((6-i)<<3);//8*(6-i)					
000462  5d00              LDRB     r0,[r0,r4]
000464  f1c40106          RSB      r1,r4,#6
000468  00c9              LSLS     r1,r1,#3
00046a  4088              LSLS     r0,r0,r1
00046c  490a              LDR      r1,|L1.1176|
00046e  6809              LDR      r1,[r1,#0]  ; Temp_Rate
000470  4308              ORRS     r0,r0,r1
000472  4909              LDR      r1,|L1.1176|
000474  6008              STR      r0,[r1,#0]  ; Temp_Rate
000476  1c60              ADDS     r0,r4,#1              ;246
000478  b2c4              UXTB     r4,r0                 ;246
                  |L1.1146|
00047a  2c07              CMP      r4,#7                 ;246
00047c  dbef              BLT      |L1.1118|
;;;250    			}
;;;251    			ch_CMD = Temp_Array[2];
00047e  4805              LDR      r0,|L1.1172|
000480  7880              LDRB     r0,[r0,#2]  ; Temp_Array
000482  4906              LDR      r1,|L1.1180|
000484  7008              STRB     r0,[r1,#0]
                  |L1.1158|
;;;252    		}
;;;253    		*p_Rate = Temp_Rate;
000486  4804              LDR      r0,|L1.1176|
000488  6800              LDR      r0,[r0,#0]  ; Temp_Rate
00048a  6028              STR      r0,[r5,#0]
                  |L1.1164|
;;;254    	}
;;;255    	return ch_CMD;
00048c  4803              LDR      r0,|L1.1180|
00048e  7800              LDRB     r0,[r0,#0]  ; ch_CMD
;;;256    }
000490  bd70              POP      {r4-r6,pc}
;;;257    
                          ENDP

000492  0000              DCW      0x0000
                  |L1.1172|
                          DCD      Temp_Array
                  |L1.1176|
                          DCD      Temp_Rate
                  |L1.1180|
                          DCD      ch_CMD

                          AREA ||.bss||, DATA, NOINIT, ALIGN=0

                  Temp_Array
                          %        30

                          AREA ||.data||, DATA, ALIGN=2

                  nRF2401_Conf
000000  8e081c50          DCB      0x8e,0x08,0x1c,0x50
000004  50aaab55          DCB      0x50,0xaa,0xab,0x55
000008  abaaaaab          DCB      0xab,0xaa,0xaa,0xab
00000c  55abaaa3          DCB      0x55,0xab,0xaa,0xa3
000010  ef91              DCB      0xef,0x91
                  TxAddress
000012  cccc              DCB      0xcc,0xcc
000014  cccc0000          DCB      0xcc,0xcc,0x00,0x00
                  Temp_Rate
                          DCD      0x00000000
                  ch_CMD
00001c  00                DCB      0x00
                  Data_Buffer
00001d  00                DCB      0x00

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -