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