📄 nrf2401.txt
字号:
; generated by ARM C/C++ Compiler, 4.1 [Build 481]
; commandline ArmCC [--debug -c --asm --interleave -o.\OBJ\nrf2401.o --depend=.\OBJ\nrf2401.d --cpu=Cortex-M3 --apcs=interwork -O0 -I..\Demo -I.\HARDWARE\EXTI -I.\HARDWARE\KEY -I.\HARDWARE\LCD -I.\HARDWARE\LED -I.\HARDWARE\TIMER -I.\HARDWARE\WDG -I.\SYSTEM\delay -I.\SYSTEM\sys -I.\SYSTEM\usart -I.\USER -IC:\Keil\ARM\INC -IC:\Keil\ARM\INC\ST\STM32F10x --omf_browse=.\OBJ\nrf2401.crf USER\nRF2401.c]
THUMB
AREA ||.text||, CODE, READONLY, ALIGN=2
ByteRead PROC
;;;18 //数据在高电平时读取
;;;19 unsigned char ByteRead(void)
000000 2100 MOVS r1,#0
;;;20 {
;;;21 unsigned char i;
;;;22 for (i=0;i<8;i++)
000002 e03e B |L1.130|
|L1.4|
;;;23 {
;;;24 Data_Buffer=Data_Buffer<<1;
000004 48fc LDR r0,|L1.1016|
000006 7800 LDRB r0,[r0,#0] ; Data_Buffer
000008 0640 LSLS r0,r0,#25
00000a 0e00 LSRS r0,r0,#24
00000c 4afa LDR r2,|L1.1016|
00000e 7010 STRB r0,[r2,#0]
;;;25 CLK1_SET();
000010 48fa LDR r0,|L1.1020|
000012 6800 LDR r0,[r0,#0]
000014 f0400010 ORR r0,r0,#0x10
000018 4af9 LDR r2,|L1.1024|
00001a f8c2080c STR r0,[r2,#0x80c]
;;;26
;;;27 //NRF_DDR&=~(1<<DATA); //设置为输入状态
;;;28 //DATA_SET();
;;;29 NRF2401_DATA_IN; //设置为输入状态
00001e 4610 MOV r0,r2
000020 f8d00800 LDR r0,[r0,#0x800]
000024 f4200070 BIC r0,r0,#0xf00000
000028 f8c20800 STR r0,[r2,#0x800]
00002c 4610 MOV r0,r2
00002e f8d00800 LDR r0,[r0,#0x800]
000032 f4400000 ORR r0,r0,#0x800000
000036 f8c20800 STR r0,[r2,#0x800]
00003a 4610 MOV r0,r2
00003c f8d0080c LDR r0,[r0,#0x80c]
000040 f0400020 ORR r0,r0,#0x20
000044 f8c2080c STR r0,[r2,#0x80c]
;;;30 if(DATA_STATE)
000048 48ee LDR r0,|L1.1028|
00004a 6800 LDR r0,[r0,#0]
00004c f0000020 AND r0,r0,#0x20
000050 2820 CMP r0,#0x20
000052 d106 BNE |L1.98|
;;;31 {
;;;32 Data_Buffer|=BYTE_BIT0;
000054 48e8 LDR r0,|L1.1016|
000056 7800 LDRB r0,[r0,#0] ; Data_Buffer
000058 f0400001 ORR r0,r0,#1
00005c 4ae6 LDR r2,|L1.1016|
00005e 7010 STRB r0,[r2,#0]
000060 e005 B |L1.110|
|L1.98|
;;;33 }
;;;34 else
;;;35 {
;;;36 Data_Buffer&=~BYTE_BIT0;
000062 48e5 LDR r0,|L1.1016|
000064 7800 LDRB r0,[r0,#0] ; Data_Buffer
000066 f0200001 BIC r0,r0,#1
00006a 4ae3 LDR r2,|L1.1016|
00006c 7010 STRB r0,[r2,#0]
|L1.110|
;;;37 }
;;;38 CLK1_CLR();
00006e 48e3 LDR r0,|L1.1020|
000070 6800 LDR r0,[r0,#0]
000072 f0200010 BIC r0,r0,#0x10
000076 4ae2 LDR r2,|L1.1024|
000078 f8c2080c STR r0,[r2,#0x80c]
00007c f1010001 ADD r0,r1,#1 ;22
000080 b2c1 UXTB r1,r0 ;22
|L1.130|
000082 2908 CMP r1,#8 ;22
000084 dbbe BLT |L1.4|
;;;39 }
;;;40 return Data_Buffer;
000086 48dc LDR r0,|L1.1016|
000088 7800 LDRB r0,[r0,#0] ; Data_Buffer
;;;41 }
00008a 4770 BX lr
;;;42 //数据在上升沿时写入
ENDP
ByteWrite PROC
;;;43 void ByteWrite(unsigned char send)
00008c 4ada LDR r2,|L1.1016|
;;;44 {
;;;45 unsigned char i;
;;;46 Data_Buffer=send;
00008e 7010 STRB r0,[r2,#0]
;;;47 //NRF_DDR|=((1<<DATA)|(1<<CLK1));
;;;48 NRF2401_DATA_OUT;
000090 4add LDR r2,|L1.1032|
000092 6812 LDR r2,[r2,#0]
000094 f4220270 BIC r2,r2,#0xf00000
000098 4bd9 LDR r3,|L1.1024|
00009a f8c32800 STR r2,[r3,#0x800]
00009e 461a MOV r2,r3
0000a0 f8d22800 LDR r2,[r2,#0x800]
0000a4 f4421240 ORR r2,r2,#0x300000
0000a8 f8c32800 STR r2,[r3,#0x800]
0000ac 461a MOV r2,r3
0000ae f8d2280c LDR r2,[r2,#0x80c]
0000b2 f0420220 ORR r2,r2,#0x20
0000b6 f8c3280c STR r2,[r3,#0x80c]
;;;49 for (i=0;i<8;i++)
0000ba f04f0100 MOV r1,#0
0000be e02d B |L1.284|
|L1.192|
;;;50 {
;;;51 if (Data_Buffer&BIT(7)) //总是发送最高位
0000c0 4acd LDR r2,|L1.1016|
0000c2 7812 LDRB r2,[r2,#0] ; Data_Buffer
0000c4 f0120f80 TST r2,#0x80
0000c8 d007 BEQ |L1.218|
;;;52 {
;;;53 DATA_SET();
0000ca 4acc LDR r2,|L1.1020|
0000cc 6812 LDR r2,[r2,#0]
0000ce f0420220 ORR r2,r2,#0x20
0000d2 4bcb LDR r3,|L1.1024|
0000d4 f8c3280c STR r2,[r3,#0x80c]
0000d8 e006 B |L1.232|
|L1.218|
;;;54 }
;;;55 else
;;;56 {
;;;57 DATA_CLR();
0000da 4ac8 LDR r2,|L1.1020|
0000dc 6812 LDR r2,[r2,#0]
0000de f0220220 BIC r2,r2,#0x20
0000e2 4bc7 LDR r3,|L1.1024|
0000e4 f8c3280c STR r2,[r3,#0x80c]
|L1.232|
;;;58 }
;;;59 CLK1_SET();
0000e8 4ac4 LDR r2,|L1.1020|
0000ea 6812 LDR r2,[r2,#0]
0000ec f0420210 ORR r2,r2,#0x10
0000f0 4bc3 LDR r3,|L1.1024|
0000f2 f8c3280c STR r2,[r3,#0x80c]
;;;60 Data_Buffer=Data_Buffer<<1;
0000f6 4ac0 LDR r2,|L1.1016|
0000f8 7812 LDRB r2,[r2,#0] ; Data_Buffer
0000fa ea4f6242 LSL r2,r2,#25
0000fe ea4f6212 LSR r2,r2,#24
000102 4bbd LDR r3,|L1.1016|
000104 701a STRB r2,[r3,#0]
;;;61 CLK1_CLR();
000106 4abe LDR r2,|L1.1024|
000108 f8d2280c LDR r2,[r2,#0x80c]
00010c f0220210 BIC r2,r2,#0x10
000110 4bbb LDR r3,|L1.1024|
000112 f8c3280c STR r2,[r3,#0x80c]
000116 f1010201 ADD r2,r1,#1 ;49
00011a b2d1 UXTB r1,r2 ;49
|L1.284|
00011c 2908 CMP r1,#8 ;49
00011e dbcf BLT |L1.192|
;;;62 }
;;;63 }
000120 4770 BX lr
;;;64
ENDP
Config2401 PROC
;;;77
;;;78 void Config2401(void)
000122 b570 PUSH {r4-r6,lr}
;;;79 {
;;;80 unsigned int i;
;;;81 unsigned char variablel;
;;;82 //CS=0;
;;;83 //CE=0;
;;;84 //PWR_UP=1; //上电
;;;85
;;;86 //NRF_DDR|=((1<<CS)|(1<<CE)|(1<<PWR_UP)); //端口电平初始化
;;;87 RCC-> APB2ENR |= BIT(2);
000124 48b9 LDR r0,|L1.1036|
000126 6980 LDR r0,[r0,#0x18]
000128 f0400004 ORR r0,r0,#4
00012c 49b7 LDR r1,|L1.1036|
00012e 6188 STR r0,[r1,#0x18]
;;;88 NRF_DDR &= 0xff000000; //PA0-5
000130 48b5 LDR r0,|L1.1032|
000132 6800 LDR r0,[r0,#0]
000134 f000407f AND r0,r0,#0xff000000
000138 49b1 LDR r1,|L1.1024|
00013a f8c10800 STR r0,[r1,#0x800]
;;;89 NRF_DDR |= 0x00333333; //推挽输出
00013e 48b2 LDR r0,|L1.1032|
000140 6800 LDR r0,[r0,#0]
000142 49b3 LDR r1,|L1.1040|
000144 ea400001 ORR r0,r0,r1
000148 49ad LDR r1,|L1.1024|
00014a f8c10800 STR r0,[r1,#0x800]
;;;90 NRF_PORT |= 0x003F; //PA0-5
00014e 4608 MOV r0,r1
000150 f8d0080c LDR r0,[r0,#0x80c]
000154 f040003f ORR r0,r0,#0x3f
000158 f8c1080c STR r0,[r1,#0x80c]
;;;91
;;;92 CS_CLR();
00015c 4608 MOV r0,r1
00015e f8d0080c LDR r0,[r0,#0x80c]
000162 f0200004 BIC r0,r0,#4
000166 f8c1080c STR r0,[r1,#0x80c]
;;;93 CE_CLR();
00016a 4608 MOV r0,r1
00016c f8d0080c LDR r0,[r0,#0x80c]
000170 f0200002 BIC r0,r0,#2
000174 f8c1080c STR r0,[r1,#0x80c]
;;;94 PWR_UP_CLR();
000178 4608 MOV r0,r1
00017a f8d0080c LDR r0,[r0,#0x80c]
00017e f0200001 BIC r0,r0,#1
000182 499e LDR r1,|L1.1020|
000184 6008 STR r0,[r1,#0]
;;;95 Delay_nMS(6); //从上电到进入配置模式需要3ms 的延时
000186 f04f0006 MOV r0,#6
00018a f7fffffe BL delay_ms
;;;96 CS_SET(); //CS=1; //使RF2401 进入配置方式
00018e 489c LDR r0,|L1.1024|
000190 f8d0080c LDR r0,[r0,#0x80c]
000194 f0400004 ORR r0,r0,#4
000198 4999 LDR r1,|L1.1024|
00019a f8c1080c STR r0,[r1,#0x80c]
;;;97 for (i=0;i<18;i++)
00019e 2400 MOVS r4,#0
0001a0 e005 B |L1.430|
|L1.418|
;;;98 {
;;;99 variablel=nRF2401_Conf[i];
0001a2 489c LDR r0,|L1.1044|
0001a4 5d05 LDRB r5,[r0,r4]
;;;100 ByteWrite(variablel);
0001a6 4628 MOV r0,r5
0001a8 f7fffffe BL ByteWrite
0001ac 1c64 ADDS r4,r4,#1 ;97
|L1.430|
0001ae 2c12 CMP r4,#0x12 ;97
0001b0 d3f7 BCC |L1.418|
;;;101 }
;;;102 Delay_nUS(600);
0001b2 f44f7016 MOV r0,#0x258
0001b6 f7fffffe BL delay_us
;;;103 CS_CLR(); //CS 置低使配置有效
0001ba 4890 LDR r0,|L1.1020|
0001bc 6800 LDR r0,[r0,#0]
0001be f0200004 BIC r0,r0,#4
0001c2 498f LDR r1,|L1.1024|
0001c4 f8c1080c STR r0,[r1,#0x80c]
;;;104 Delay_nUS(600);
0001c8 f44f7016 MOV r0,#0x258
0001cc f7fffffe BL delay_us
;;;105 }
0001d0 bd70 POP {r4-r6,pc}
;;;106
ENDP
SetTxMode PROC
;;;107 void SetTxMode(void)
0001d2 b510 PUSH {r4,lr}
;;;108 {
;;;109 //NRF_DDR|=((1<<CS)|(1<<CE)|(1<<PWR_UP)|(1<<DATA)|(1<<CLK1));
;;;110 NRF_DDR &= 0xff000000; //PA0-5
0001d4 488c LDR r0,|L1.1032|
0001d6 6800 LDR r0,[r0,#0]
0001d8 f000407f AND r0,r0,#0xff000000
0001dc 4988 LDR r1,|L1.1024|
0001de f8c10800 STR r0,[r1,#0x800]
;;;111 NRF_DDR |= 0x00333333; //推挽输出
0001e2 4889 LDR r0,|L1.1032|
0001e4 6800 LDR r0,[r0,#0]
0001e6 498a LDR r1,|L1.1040|
0001e8 ea400001 ORR r0,r0,r1
0001ec 4984 LDR r1,|L1.1024|
0001ee f8c10800 STR r0,[r1,#0x800]
;;;112 NRF_PORT |= 0x003F;
0001f2 4608 MOV r0,r1
0001f4 f8d0080c LDR r0,[r0,#0x80c]
0001f8 f040003f ORR r0,r0,#0x3f
0001fc f8c1080c STR r0,[r1,#0x80c]
;;;113 //设置为配置模式
;;;114 //PWR_UP=1;
;;;115 //CE=0;
;;;116 //CS=1;
;;;117 PWR_UP_SET();
000200 4608 MOV r0,r1
000202 f8d0080c LDR r0,[r0,#0x80c]
000206 f0400001 ORR r0,r0,#1
00020a f8c1080c STR r0,[r1,#0x80c]
;;;118 CE_CLR();
00020e 4608 MOV r0,r1
000210 f8d0080c LDR r0,[r0,#0x80c]
000214 f0200002 BIC r0,r0,#2
000218 f8c1080c STR r0,[r1,#0x80c]
;;;119 CS_SET();
00021c 4608 MOV r0,r1
00021e f8d0080c LDR r0,[r0,#0x80c]
000222 f0400004 ORR r0,r0,#4
000226 4975 LDR r1,|L1.1020|
000228 6008 STR r0,[r1,#0]
;;;120 Delay_nUS(600);
00022a f44f7016 MOV r0,#0x258
00022e f7fffffe BL delay_us
;;;121 //配置寄存器0 字节RXEN 设置为0:发送模式
;;;122 //DATA =0;
;;;123 //CLK1=1;
;;;124 //CLK1=0;
;;;125 DATA_CLR();
000232 4873 LDR r0,|L1.1024|
000234 f8d0080c LDR r0,[r0,#0x80c]
000238 f0200020 BIC r0,r0,#0x20
00023c 4970 LDR r1,|L1.1024|
00023e f8c1080c STR r0,[r1,#0x80c]
;;;126 CLK1_SET();
000242 4608 MOV r0,r1
000244 f8d0080c LDR r0,[r0,#0x80c]
000248 f0400010 ORR r0,r0,#0x10
00024c f8c1080c STR r0,[r1,#0x80c]
;;;127 CLK1_CLR();
000250 4608 MOV r0,r1
000252 f8d0080c LDR r0,[r0,#0x80c]
000256 f0200010 BIC r0,r0,#0x10
00025a f8c1080c STR r0,[r1,#0x80c]
;;;128 //设置为Activemodes(Tx)
;;;129 //CS=0;
;;;130 //CE=1;
;;;131 CS_CLR();
00025e 4608 MOV r0,r1
000260 f8d0080c LDR r0,[r0,#0x80c]
000264 f0200004 BIC r0,r0,#4
000268 f8c1080c STR r0,[r1,#0x80c]
;;;132 CE_SET();
00026c 4608 MOV r0,r1
00026e f8d0080c LDR r0,[r0,#0x80c]
000272 f0400002 ORR r0,r0,#2
000276 f8c1080c STR r0,[r1,#0x80c]
;;;133 Delay_nUS(600);
00027a f44f7016 MOV r0,#0x258
00027e f7fffffe BL delay_us
;;;134 }
000282 bd10 POP {r4,pc}
;;;135
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -