📄 nrf905.lst
字号:
C51 COMPILER V8.02 NRF905 08/28/2006 20:53:29 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE NRF905
OBJECT MODULE PLACED IN nrf905.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE nrf905.C BROWSE DEBUG OBJECTEXTEND
line level source
1 /*******************************************************************************************
2 *nrf905_demo.c
3 *
4 *This file is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTYT;
5 *
6 *uart:9600BPS
7 *****************
8 * 官方网址: http://www.newmsg.com
9 * 官方论坛: http://www.newmsg.com/bbs
10 ****************
11 ***NewMsg Tech**
12 ****************
13 /*******************************************************************************************/
14 #include<at89x51.h>
15 #include<intrins.h>
16
17 #define uchar unsigned char
18 #define uint unsigned int
19
20 #define WC 0x00 // Write configuration register command
21 #define RC 0x10 // Read configuration register command
22 #define WTP 0x20 // Write TX Payload command
23 #define RTP 0x21 // Read TX Payload command
24 #define WTA 0x22 // Write TX Address command
25 #define RTA 0x23 // Read TX Address command
26 #define RRP 0x24 // Read RX Payload command
27 /*******************************************************************************************/
28 typedef struct RFConfig
29 {
30 uchar n;
31 uchar buf[10];
32 }RFConfig;
33
34 code RFConfig RxTxConf =
35 {
36 10,
37 0x01, 0x0c, 0x44, 0x20, 0x20, 0xcc, 0xcc, 0xcc,0xcc, 0x58
38 };
39 // The content of this struct is nRF905's initialize data.初始化数据
40 // CH_NO=1;433MHZ;Normal Opration,No Retrans;RX,TX Address is 4 Bytes
41 // RX TX Payload Width is 32 Bytes;Disable Extern Clock;Fosc=16MHZ
42 // 8 Bits CRC And enable
43 /*******************************************************************************************/
44 uchar data TxBuf[32];
45 uchar data RxBuf[32];
46 /*******************************************************************************************/
47 uchar key,rsbrf,delayf,tf;
48 /*******************************************************************************************/
49 uchar bdata DATA_BUF;
50 sbit flag =DATA_BUF^7;
51 sbit flag1 =DATA_BUF^0;
52 /*******************************************************************************************/
53 sbit TX_EN =P2^6;
54 sbit TRX_CE =P2^5;
55 sbit PWR_UP =P2^4;
C51 COMPILER V8.02 NRF905 08/28/2006 20:53:29 PAGE 2
56 sbit MISO =P2^3;
57 sbit MOSI =P2^2;
58 sbit SCK =P2^1;
59 sbit CSN =P2^0;
60
61 sbit AM =P3^2;
62 sbit DR =P3^3;
63 sbit CD =P3^5;
64 /*******************************************************************************************/
65 void InitIO(void); // Initialize IO port
66 void Inituart(void); // initialize 232 uart
67 void Config905(void); // Config nRF905 module配置NRF905模式
68 void SetTxMode(void); // Set nRF905 in Tx mode
69 void SetRxMode(void); // Set nRF905 in Rx mode
70 void TxPacket(void); // Send data by nRF905
71 void RxPacket(void); // Recive data by nRF905
72 void SpiWrite(uchar); // Write data to nRF905
73 uchar SpiRead(void); // Read data to nRF905
74 void Delay(uchar n); // Delay 100us
75 void Scankey(void); // Scan key
76 void TxData (uchar x); // Send key_value to CRT display
77 void comdebug(void);
78 /*******************************************************************************************/
79 void TxData (unsigned char x)
80 {
81 1 SBUF=x;
82 1 while(TI==0);
83 1 TI=0;
84 1 }
85 /*******************************************************************************************/
86 //function Delay100us();Delay 100us
87 /*******************************************************************************************/
88 void Delay(uchar n)
89 {
90 1 uint i;
91 1 while(n--)
92 1 for(i=0;i<80;i++);
93 1 }
94 /*******************************************************************************************/
95 void serial () interrupt 4
96 {
97 1 unsigned char temp;
98 1 if(RI)
99 1 {
100 2
101 2 temp=SBUF;
102 2 rsbrf=temp;
103 2 RI=0;
104 2 }
105 1 }
106 /*******************************************************************************************/
107 void main()
108 {
109 1 unsigned int cyc=0;
110 1 unsigned int distan=0;
111 1
112 1 SCON=0x50; //模式1
113 1 TMOD=0x21; //定时模式2
114 1 IE=0x90;
115 1
116 1 //=====9600=======设置串口通讯寄存器
117 1 PCON=0x00; //波特率9600BPS,晶振11.0592MHZ
C51 COMPILER V8.02 NRF905 08/28/2006 20:53:29 PAGE 3
118 1 TH1=0xFD; //
119 1 TL1=0xFD; //计数器初值
120 1 //================NRF905初始化
121 1 CSN=1; // Spi disable
122 1 SCK=0; // Spi clock line init high
123 1 DR=1; // Init DR for input
124 1 AM=1; // Init AM for input
125 1 PWR_UP=1; // nRF905 power on
126 1 TRX_CE=0; // Set nRF905 in standby mode
127 1 TX_EN=0; // set radio in Rx mode
128 1
129 1 TI = 0;//串行中断标志位清零
130 1 TR1 = 1;//打开计数器1
131 1 //================
132 1 Config905(); // Config nRF905 module
133 1 SetTxMode(); // Set Tx Mode
134 1 TxPacket(); // Transmit Tx buffer data
135 1 P0=0x00;
136 1 Delay(500); // delay for led light
137 1 P0=0xff; // led close
138 1 SetRxMode(); // Set nRF905 in Rx mode
139 1
140 1 while(1)
141 1 {
142 2 //=====================从键盘获得数据
143 2 switch(P0)
144 2 {
145 3 case 0xfe:P0=0xef;TxBuf[0]=0xef;tf=1;break;
146 3 case 0xfd:P0=0xdf;TxBuf[0]=0xdf;tf=1;break;
147 3 case 0xfb:P0=0xbf;TxBuf[0]=0xbf;tf=1;break;
148 3 case 0xf7:P0=0x7f;TxBuf[0]=0x7f;tf=1;break;
149 3 //default:P0=0xff;TxBuf[0]=0xff;
150 3 }
151 2 if (tf==1)
152 2 {
153 3 //==============向串口发送相应的按键
154 3 switch(TxBuf[0])
155 3 {
156 4 case 0xef:TxData('A');break;
157 4 case 0xdf:TxData('B');break;
158 4 case 0xbf:TxData('C');break;
159 4 case 0x7f:TxData('D');break;
160 4 //default:P0=0xff;TxBuf[0]=0xff;
161 4 }
162 3 //===============NRF905发送相应的按键
163 3 SetTxMode(); // Set Tx Mode
164 3 TxPacket(); // Transmit Tx buffer data
165 3 TxBuf[0] = 0xff;
166 3 SetRxMode(); // Set nRF905 in Rx mode
167 3 tf=0;
168 3 Delay(500);
169 3 P0=0xff;
170 3 }
171 2
172 2 //=====================等待NRF905接收
173 2 if (DR) // If recive data ready...
174 2 RxPacket(); // ... recive data
175 2 //=====================从串口接收到数据
176 2 if (rsbrf!=0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -