📄 nrf_perf.lst
字号:
C51 COMPILER V7.50 NRF_PERF 02/11/2006 11:23:19 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE NRF_PERF
OBJECT MODULE PLACED IN nRF_Perf.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE nRF_Perf.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*= nRF_Perf.c ==================================================================
2 *
3 * Development By www.51kaifa.com
4 * Copyright (C) 2005
5 *
6 * 无忧无线SOC开发平台专用测试程序
7 * 版本:1.0
8 *
9 * 2005年7月7日
10 *
11 *===============================================================================
12 */
13
14 #include <Nordic\reg9e5.h>
15
16 #define HFREQ 0 // 0=433MHz, 1=868/915MHz
17 #define POWER 3 // 0=min power...3 = max power
18
19 bit rx_rqst;
20 char rcv_data;
21 unsigned int syn_count;
22
23 unsigned char SpiReadWrite(unsigned char b)
24 {
25 1 EXIF &= ~0x20; // Clear SPI interrupt
26 1 SPI_DATA = b; // Move byte to send to SPI data register
27 1 while((EXIF & 0x20) == 0x00) // Wait until SPI hs finished transmitting
28 1 ;
29 1 return SPI_DATA;
30 1 }
31
32 SpiWrite(unsigned char b)
33 {
34 1 while((EXIF & 0x20) == 0x00) // Wait until SPI hs finished transmitting
35 1 ;
36 1 EXIF &= ~0x20; // Clear SPI interrupt
37 1 SPI_DATA = b; // Move byte to send to SPI data register
38 1 }
39
40 void PutChar(char c)
41 {
42 1 while(!TI)
43 1 ;
44 1 TI = 0;
45 1 SBUF = c;
46 1 }
47
48 void PutString(const char *s)
49 {
50 1 while(*s != 0)
51 1 PutChar(*s++);
52 1 }
53
54
55 void Init(void)
C51 COMPILER V7.50 NRF_PERF 02/11/2006 11:23:19 PAGE 2
56 {
57 1 unsigned char tmp;
58 1
59 1 //SPI 设置
60 1
61 1 SPICLK = 0; // Max SPI clock
62 1 SPI_CTRL = 0x02; // Connect intewrnal SPI controller to Radio
63 1
64 1 // Configure Radio:
65 1 RACSN = 0;
66 1 SpiReadWrite(WRC | 0x03); // Write to RF config Rx_deepess 3 (RX payload)
67 1 SpiReadWrite(0x01); // One byte RX payload
68 1 SpiReadWrite(0x01); // One byte TX payload
69 1 RACSN = 1;
70 1
71 1 RACSN = 0;
72 1 SpiReadWrite(RRC | 0x01); // Read RF config Rx_deepess 1
73 1 tmp = SpiReadWrite(0) & 0xf1; // Clear the power and frequency setting bits
74 1 RACSN = 1;
75 1
76 1 RACSN = 0;
77 1 SpiReadWrite(WRC | 0x01); // Write RF config Rx_deepess 1
78 1 // Change power defined by POWER and to 433 or 868/915MHz defined by HFREQ above:
79 1 SpiReadWrite(tmp | (POWER <<2) | (HFREQ << 1));
80 1 RACSN = 1;
81 1
82 1 RACSN = 0;
83 1 SpiReadWrite(RRC | 0x09); // Read RF config Rx_deepess 1
84 1 tmp = SpiReadWrite(0) | 0x04; // Clear the power and frequency setting bits
85 1 RACSN = 1;
86 1
87 1
88 1 RACSN = 0;
89 1 SpiReadWrite(WRC | 0x09); // Write to RF config Rx_deepess 9 (cpu clk)
90 1 SpiReadWrite(tmp); // One byte RX cpu clk
91 1 RACSN = 1;
92 1
93 1 }
94
95 void uart_init(void)
96 {
97 1 TH1 = 0xE6; // 9600@16MHz (when T1M=1 and SMOD=1)
98 1 CKCON |= 0x30; // T1M=1 (/4 timer clock)
99 1 PCON = 0x80; // SMOD=1 (double baud rate)
100 1 SCON = 0x52; // Serial mode1, enable receiver
101 1 TMOD = 0x20; // Timer1 8bit auto reload
102 1 TR1 = 1; // Start timer1
103 1 P0_ALT = 0x06; // Select alternate functions on pins P0.1 and P0.2
104 1 P0_DIR = 0xAA; // P0.1 (RxD) is input
105 1
106 1 }
107
108 void Delay(volatile unsigned char n)
109 {
110 1 unsigned char i;
111 1 while(n--)
112 1 {
113 2 for(i=0;i<6;i++)
114 2 ;
115 2 }
116 1 }
117
C51 COMPILER V7.50 NRF_PERF 02/11/2006 11:23:19 PAGE 3
118 void Transmitstring()
119 {
120 1
121 1 RACSN = 0;
122 1 SpiWrite(WTP);
123 1 SpiWrite(0x23);
124 1 RACSN = 1;
125 1
126 1 TRX_CE = 1;
127 1 Delay(5);
128 1 TRX_CE = 0;
129 1 }
130
131 void DR_ISR(void) interrupt 10
132 {
133 1
134 1 EXIF = EXIF & 0xBF;
135 1
136 1 RACSN = 0;
137 1 SpiReadWrite(RRP);
138 1 rcv_data = SpiReadWrite(0);
139 1 RACSN = 1;
140 1
141 1 if (rcv_data == 0x23)
142 1 {
143 2 rx_rqst = 1;
144 2 P06 = ~P06;
145 2 syn_count = 16384;
146 2 }
147 1
148 1 }
149
150 void main(void)
151 {
152 1
153 1 Init();
154 1 uart_init();
155 1
156 1 EX4 = 1;
157 1 PX4 = 1;
158 1
159 1 EA = 1;
160 1
161 1 PutString("hello world!\n");
162 1
163 1 while(1)
164 1 {
165 2
166 2 syn_count++;
167 2
168 2 if (syn_count==32000)
169 2 {
170 3 TXEN = 1;
171 3 }
172 2 if (syn_count==32767)
173 2 {
174 3 Transmitstring();
175 3 P04 = ~P04;
176 3 syn_count=0;
177 3 TXEN = 0;
178 3 TRX_CE = 1;
179 3 }
C51 COMPILER V7.50 NRF_PERF 02/11/2006 11:23:19 PAGE 4
180 2
181 2 if (rx_rqst==1)
182 2 {
183 3 rx_rqst=0;
184 3 PutChar(rcv_data);
185 3 }
186 2
187 2 }
188 1 }
189
190
191 // End
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 345 ----
CONSTANT SIZE = 14 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 4
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -