?? nrf905.lst
字號:
177 2 {
178 3 switch(rsbrf)
179 3 {
C51 COMPILER V8.02 NRF905 08/28/2006 20:53:29 PAGE 4
180 4 case 'A':P0=0xef;TxBuf[0]=0xef;delayf=1;break;
181 4 case 'B':P0=0xdf;TxBuf[0]=0xdf;delayf=1;break;
182 4 case 'C':P0=0xbf;TxBuf[0]=0xbf;delayf=1;break;
183 4 case 'D':P0=0x7f;TxBuf[0]=0x7f;delayf=1;break;
184 4 //default:P0=0xff;TxBuf[0]=0xff;
185 4 }
186 3 //====================NRF905發送串口接收到的相應的字符
187 3 if(TxBuf[0]!=0xff)
188 3 if(TxBuf[0]!=0x00)
189 3 {
190 4 SetTxMode(); // Set Tx Mode
191 4 TxPacket(); // Transmit Tx buffer data
192 4 TxBuf[0] = 0xff;
193 4 SetRxMode(); // Set nRF905 in Rx mode
194 4 }
195 3 //=====================
196 3 if(delayf==1)
197 3 {
198 4 Delay(500);
199 4 delayf = 0 ;
200 4 P0 = 0xff ;
201 4 }
202 3 }
203 2 //=====================
204 2 if(rsbrf!=0)
205 2 {
206 3 TxData(rsbrf);
207 3 rsbrf = 0 ;
208 3 }
209 2 //=====================
210 2
211 2
212 2 }
213 1 }
214 /*******************************************************************************************/
215 /*******************************************************************************************/
216 //function Config905();
217 /*******************************************************************************************/
218 void Config905(void)
219 {
220 1 uchar i;
221 1 CSN=0; // Spi enable for write a spi command
222 1 SpiWrite(WC); // Write config command寫放配置命令
223 1 for (i=0;i<RxTxConf.n;i++) // Write configration words 寫放配置字
224 1 {
225 2 SpiWrite(RxTxConf.buf[i]);
226 2 }
227 1 CSN=1; // Disable Spi
228 1 }
229 /*******************************************************************************************/
230 //function SpiWrite();
231 /*******************************************************************************************/
232 void SpiWrite(uchar byte)
233 {
234 1 uchar i;
235 1 DATA_BUF=byte; // Put function's parameter into a bdata variable
236 1 for (i=0;i<8;i++) // Setup byte circulation bits
237 1 {
238 2
239 2 if (flag) // Put DATA_BUF.7 on data line
240 2 MOSI=1;
241 2 else
C51 COMPILER V8.02 NRF905 08/28/2006 20:53:29 PAGE 5
242 2 MOSI=0;
243 2 SCK=1; // Set clock line high
244 2 DATA_BUF=DATA_BUF<<1; // Shift DATA_BUF
245 2 SCK=0; // Set clock line low
246 2 }
247 1 }
248 /*******************************************************************************************/
249 //function SpiRead();
250 /*******************************************************************************************/
251 uchar SpiRead(void)
252 {
253 1 uchar i;
254 1 for (i=0;i<8;i++) // Setup byte circulation bits
255 1 {
256 2 DATA_BUF=DATA_BUF<<1; // Right shift DATA_BUF
257 2 SCK=1; // Set clock line high
258 2 if (MISO)
259 2 flag1=1; // Read data
260 2 else
261 2 flag1=0;
262 2
263 2
264 2 SCK=0; // Set clock line low
265 2 }
266 1 return DATA_BUF; // Return function parameter
267 1 }
268 /*******************************************************************************************/
269 //function TxPacket();
270 /*******************************************************************************************/
271 void TxPacket(void)
272 {
273 1 uchar i;
274 1 //Config905();
275 1 CSN=0; // Spi enable for write a spi command
276 1 SpiWrite(WTP); // Write payload command
277 1 for (i=0;i<32;i++)
278 1 {
279 2 SpiWrite(TxBuf[i]); // Write 32 bytes Tx data
280 2 }
281 1 CSN=1; // Spi disable
282 1 Delay(1);
283 1 CSN=0; // Spi enable for write a spi command
284 1 SpiWrite(WTA); // Write address command
285 1 for (i=0;i<4;i++) // Write 4 bytes address
286 1 {
287 2 SpiWrite(RxTxConf.buf[i+5]);
288 2 }
289 1 CSN=1; // Spi disable
290 1 TRX_CE=1; // Set TRX_CE high,start Tx data transmission
291 1 Delay(1); // while (DR!=1);
292 1 TRX_CE=0; // Set TRX_CE low
293 1 }
294 /*******************************************************************************************/
295 //function RxPacket();
296 /*******************************************************************************************/
297 void RxPacket(void)
298 {
299 1 uchar i;
300 1 TRX_CE=0; // Set nRF905 in standby mode
301 1 CSN=0; // Spi enable for write a spi command
302 1 SpiWrite(RRP); // Read payload command
303 1 for (i=0;i<32;i++)
C51 COMPILER V8.02 NRF905 08/28/2006 20:53:29 PAGE 6
304 1 {
305 2 RxBuf[i]=SpiRead(); // Read data and save to buffer
306 2 }
307 1 CSN=1; // Disable spi
308 1 while(DR||AM);
309 1 P0= RxBuf[0]; // Buffer[0] output from P0 port...
310 1 TRX_CE=1;
311 1 //xx=(RxBuf[0]>>4)&0x0f;
312 1 //TxData(xx);
313 1 //=====================
314 1 switch(P0)
315 1 {
316 2 case 0xef:TxData('A');;break;
317 2 case 0xdf:TxData('B');;break;
318 2 case 0xbf:TxData('C');;break;
319 2 case 0x7f:TxData('D');;break;
320 2 //default:P0=0xff;TxBuf[0]=0xff;
321 2 }
322 1 //=====================
323 1
324 1 Delay(500); // ...light led
325 1 P0=0xff; // Close led
326 1 }
327 /*******************************************************************************************/
328 //function SetTxMode();
329 /*******************************************************************************************/
330 void SetTxMode(void)
331 {
332 1 TX_EN=1;
333 1 TRX_CE=0;
334 1 Delay(1); // delay for mode change(>=650us)
335 1 }
336 /*******************************************************************************************/
337 //function SetRxMode();
338 /*******************************************************************************************/
339 void SetRxMode(void)
340 {
341 1 TX_EN=0;
342 1 TRX_CE=1;
343 1 Delay(1); // delay for mode change(>=650us)
344 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 604 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 69 5
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -