📄 ptr8000.lst
字号:
122 1 while(i--);
123 1 }
124
125 void ChangeMode(uchar num)
126 {
127 1 if(num==PowerDown)
128 1 {
129 2 RFPWR = 0; /* 配置为掉电模式 */
130 2 TX_EN = 0;
131 2 TRX_EN = 0;
132 2 }
133 1 if(num==Standby)
134 1 {
135 2 TRX_EN=0;
136 2 TX_EN=0;
137 2 RFPWR=1;
138 2 }
139 1 if(num==RXMode)
140 1 {
141 2 /* TRX_EN=0; /**/
142 2 TX_EN=0;
143 2 RFPWR=1;
144 2 _nop_();
145 2 _nop_();
146 2 TRX_EN=1;
147 2 }
148 1 if(num==TXMode)
149 1 {
150 2 TX_EN=1;
151 2 RFPWR=1;
152 2 TRX_EN=0;
153 2 }
154 1 if(num==TXData)
155 1 {
156 2 TRX_EN = 1;
157 2 Delayus(20);
158 2 TRX_EN = 0; /* ?? Make a 20us Pulse as nRF905 Datasheet */
159 2 }
160 1 }
161 /*------------------------------------------------
162 SPI读写一体化函数SpiReadWrite()
163 入口参数:
164 val 写入命令或数据
165 出口参数:
166 R7 读出数据
167 ------------------------------------------------*/
168 uchar SpiReadWrite(uchar val)
169 {
170 1 uchar i;
171 1 ACC = val;
172 1 for (i = 8; i > 0; i --)
173 1 {
174 2 CY = RFMISO; //取数据SO
175 2 _rlca_(); //存数据ACC.0读数据ACC.7同时进行
176 2 RFMOSI = CY; //送数据SI
177 2 RFSCK = 1; //上升沿打入数据
178 2 _nop_();
179 2 RFSCK = 0; //下降沿读入数据(首次为假动作)
C51 COMPILER V7.50 PTR8000 03/30/2006 09:11:26 PAGE 4
180 2 }
181 1 return ACC;
182 1 }
183
184
185
186 /******** 配置nRF905函数 **************************************************************/
187 void Config905(void) using 0 //配置nRF905
188 {
189 1 RFCSN = 0; /* Spi enable for write a spi command */
190 1 SpiReadWrite(WC); /* Write config command */
191 1 /* RFCSN = 1; /***/
192 1 /* RFCSN = 0; /***/
193 1 SpiReadWrite(CH_NO_BYTE); //中心频率低8位
194 1 SpiReadWrite(PA_PWR_10dBm | HFREQ_PLL_433MHz); //发射+10dBm,发射频率433MHz,中心频率第9位=0
195 1 SpiReadWrite(TX_AFW_4BYTE | RX_AFW_4BYTE); //接收地址宽度4字节,发送地址宽度4字节
196 1 SpiReadWrite(RX_PW_16BYTE); //接收数据宽度16字节
197 1 SpiReadWrite(TX_PW_16BYTE); //发送数据宽度16字节
198 1 SpiReadWrite(RX_ADDRESS_0); //接收有效地址第1字节
199 1 SpiReadWrite(RX_ADDRESS_1); //接收有效地址第2字节
200 1 SpiReadWrite(RX_ADDRESS_2); //接收有效地址第3字节
201 1 SpiReadWrite(RX_ADDRESS_3); //接收有效地址第4字节
202 1 SpiReadWrite(CRC16_EN | XOF_16MHz); //CRC16模式使能,晶体振荡器频率16MHz
203 1 RFCSN = 1; // Disable Spi
204 1 }
205
206 void RF905_Read(uchar RFcmd,uchar *RFdata)
207 {
208 1 uchar i,len;
209 1 if(RFcmd==WTA|RFcmd==RTA) len=4;
210 1 else if(RFcmd==WC|RFcmd==RC) len=10;
211 1 else if(RFcmd==WTP|RFcmd==RTP|RFcmd==RRP) len=16;
212 1 else len=0;
213 1
214 1 RFCSN = 0; /* Spi enable for write a spi command */
215 1 SpiReadWrite(RFcmd);
216 1 for(i=0;i<len;i++) RFdata[i]=SpiReadWrite(0);
217 1 RFCSN = 1;
218 1 }
219
220 void RF905_Write(uchar RFcmd,uchar *RFdata)
221 {
222 1 uchar i,len;
223 1 if(RFcmd==WTA|RFcmd==RTA) len=4;
224 1 else if(RFcmd==WC|RFcmd==RC) len=10;
225 1 else if(RFcmd==WTP|RFcmd==RTP|RFcmd==RRP) len=16;
226 1 else len=0;
227 1
228 1 RFCSN = 0; /* Spi enable for write a spi command */
229 1 SpiReadWrite(RFcmd);
230 1 for(i=0;i<len;i++) SpiReadWrite(RFdata[i]); /* len Bytes Data */
231 1 RFCSN = 1; // Disable Spi
232 1 }
233
234
235
236
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 450 ----
CONSTANT SIZE = ---- ----
C51 COMPILER V7.50 PTR8000 03/30/2006 09:11:26 PAGE 5
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 6
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 + -