📄 cc1100_rx.lst
字号:
C51 COMPILER V8.02 CC1100_RX 11/15/2007 16:36:32 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE CC1100_RX
OBJECT MODULE PLACED IN CC1100_RX.OBJ
COMPILER INVOKED BY: C:\silabs\IDEfiles\C51\BIN\C51.exe CC1100_RX.c DB OE
line level source
1 //-----------------------------------------------------------------------------
2 // CC1100.c
3 //-----------------------------------------------------------------------------
4 // Copyright (C) 2005 Silicon Laboratories, Inc.
5 //
6 // AUTH: JS
7 // DATE: 03 JUL 02
8 //
9 // This program flashes the green LED on the C8051F31x target board about
10 // five times a second using the interrupt handler for Timer2.
11 //
12 // Target: C8051F31x
13 //
14 // Tool chain: KEIL Eval 'c'
15 //
16
17 //-----------------------------------------------------------------------------
18 // Includes
19 //-----------------------------------------------------------------------------
20 #include <c8051f310.h> // SFR declarations
21 #include <intrins.h>
22 #include <string.h>
23 #include "CC1100.h"
24
25
26 #define INT8U unsigned char
27 #define INT16U unsigned int
28
29
30
31
32 #define WRITE_BURST 0x40 //连续写入
33 #define READ_SINGLE 0x80 //读
34 #define READ_BURST 0xC0 //连续读
35 #define BYTES_IN_RXFIFO 0x7F //接收缓冲区的有效字节数
36 #define CRC_OK 0x80 //CRC校验通过位标志
37
38
39
40 //-----------------------------------------------------------------------------
41 // 16-bit SFR Definitions for 'F30x
42 //-----------------------------------------------------------------------------
43
44 sfr16 TMR2RL = 0xca; // Timer2 reload value
45 sfr16 TMR2 = 0xcc; // Timer2 counter
46
47 //-----------------------------------------------------------------------------
48 // Global CONSTANTS
49 //-----------------------------------------------------------------------------
50
51 #define SYSCLK 24500000 // SYSCLK frequency in Hz
52
53 #define BAUDRATE 9600
54
55
C51 COMPILER V8.02 CC1100_RX 11/15/2007 16:36:32 PAGE 2
56
57
58
59 //--------------------------------------------------------------------------------------------------------
---
60
61 //定义CC1100模块接口
62 sbit SCK = P0^0;
63 sbit MISO = P0^1;
64
65 sbit MOSI = P0^6;
66 sbit GDO0 = P0^7;
67 sbit CS_CC1100 = P2^0;
68 sbit GDO2 = P2^1;
69
70
71 //定义接口
72 sbit TX = P0^4;
73 sbit RX = P0^5;
74
75 sbit LED = P3^3; // LED='0' means ON
76
77
78
79 /****************************************************************************************
80 //全局变量定义
81 /****************************************************************************************/
82 INT8U PaTabel[8] = {0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0};
83
84
85
86 //-----------------------------------------------------------------------------
87 // Function PROTOTYPES
88 //-----------------------------------------------------------------------------
89 void SYSCLK_Init (void);
90 void PORT_Init (void);
91
92
93 void UART0_Init(void);
94 void SendCh(INT8U c);
95
96
97 void delay(unsigned int s);
98 INT8U SpiReadWrite(INT8U dat);
99 void halSpiWriteReg(INT8U addr, INT8U value);
100 void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count);
101 void halSpiStrobe(INT8U strobe);
102 INT8U halSpiReadReg(INT8U addr);
103 void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count);
104 INT8U halSpiReadStatus(INT8U addr);
105
106
107
108 void halWait(INT16U timeout);
109 void RESET_CC1100(void);
110 void POWER_UP_RESET_CC1100(void);
111 void halRfWriteRfSettings(void);
112 void Init_CC1100(void);
113
114
115
116
C51 COMPILER V8.02 CC1100_RX 11/15/2007 16:36:32 PAGE 3
117 void halRfSendPacket(INT8U *txBuffer,INT8U size);
118 INT8U halRfReceivePacket(INT8U *rxBuffer,INT8U length);
119
120 //-----------------------------------------------------------------------------
121 // MAIN Routine
122 //-----------------------------------------------------------------------------
123 void main (void) {
124 1
125 1 // INT8U TT,TT1;
126 1 // INT8U arrTx[4];
127 1 INT8U arrRx[4]={0x55,0x22,0x65,0x00};
128 1
129 1
130 1 PCA0MD &= ~0x40; //disable watchdog timer
131 1 PORT_Init();
132 1 SYSCLK_Init();
133 1 UART0_Init();
134 1
135 1 //
136 1 // TT1=SpiReadWrite(TT);
137 1 Init_CC1100();
138 1
139 1
140 1 // LED = 0;
141 1 //
142 1 // SendCh(0x55);
143 1 // halSpiWriteReg(CCxxx0_FSCTRL0,rfSettings.FSCTRL2);
144 1
145 1 // arrTx[0] = 0x55;
146 1 // arrTx[1] = 0x0A;
147 1 // arrTx[2] = 0xCC;
148 1
149 1 // arrTx[3] = 0x33;
150 1
151 1
152 1 // halRfSendPacket(arrTx, 4);
153 1 while(1)
154 1 {
155 2
156 2 LED =~LED;
157 2
158 2 // delay(60000);
159 2
160 2
161 2 if(halRfReceivePacket(arrRx,4))
162 2 {
163 3
164 3
165 3
166 3 SendCh(arrRx[0]);
167 3 SendCh(arrRx[1]);
168 3 SendCh(arrRx[2]);
169 3 SendCh(arrRx[3]);
170 3
171 3 }
172 2
173 2
174 2
175 2
176 2
177 2 }
178 1
C51 COMPILER V8.02 CC1100_RX 11/15/2007 16:36:32 PAGE 4
179 1
180 1 }
181
182
183
184
185 /*****************************************************************************************
186 //函数名:void PORT_Init (void)
187 //输入:无
188 //输出:无
189 //功能描述:
190 /*****************************************************************************************/
191 void PORT_Init (void)
192 {
193 1 P0MDOUT = 0x51;
194 1 P2MDOUT = 0x01;
195 1 P3MDOUT = 0x08;
196 1 XBR0 = 0x01;
197 1 XBR1 = 0xC0;
198 1
199 1 CS_CC1100 = 1;
200 1 SCK = 0;
201 1 MISO = 1;
202 1 MOSI = 0;
203 1 GDO0 = 1;
204 1 GDO2 = 1;
205 1 LED = 1;
206 1 CS_CC1100 = 1;
207 1
208 1 }
209
210
211 void SYSCLK_Init(void)
212 {
213 1 OSCICN = 0x83;
214 1 CLKSEL = 0x00;
215 1
216 1 }
217
218
219 /*****************************************************************************************
220 //函数名:void UART0_Init(void)
221 //功能描述:初始化串口0,9600,8,N
222 /*****************************************************************************************/
223 void UART0_Init(void)
224 {
225 1 SCON0 = 0x10; //串口方式1,8,允许接收
226 1 TMOD |= 0x20; //定时器1工作方式1,8 autoload
227 1 TH1 = 0x96;
228 1 TL1 = 0x96;
229 1
230 1 TR1 = 1; //启动定时器1
231 1 ES0 = 0;
232 1 }
233
234 /*****************************************************************************************
235 //函数名:void SendCh(INT8U c)
236 //输入:无
237 //输出:无
238 //功能描述:串口发送一个字符
239 /*****************************************************************************************/
240 void SendCh(INT8U c)
C51 COMPILER V8.02 CC1100_RX 11/15/2007 16:36:32 PAGE 5
241 {
242 1 EA = 0;
243 1
244 1 TI0 = 0;
245 1 SBUF0 = c;
246 1 while(!TI0);
247 1 TI0 = 0;
248 1 EA = 1;
249 1 }
250
251
252
253
254 //*****************************************************************************************
255 //函数名:void delay(unsigned int s)
256 //输入:时间
257 //输出:无
258 //功能描述:普通廷时
259 //*****************************************************************************************
260 void delay(unsigned int s)
261 {
262 1 unsigned int i;
263 1 for(i=0; i<s; i++);
264 1 for(i=0; i<s; i++);
265 1 for(i=0; i<s; i++);
266 1 }
267
268
269 //*****************************************************************************************
270 //函数名:INT8U SpiReadWrite(INT8U dat)
271 //输入:发送的数据
272 //输出:无
273 //功能描述:SPI发送一个字节
274 //*****************************************************************************************
275 INT8U SpiReadWrite(INT8U dat)
276 {
277 1 INT8U i,temp;
278 1
279 1 temp = 0;
280 1 SCK = 0;
281 1 _nop_();
282 1 for(i=0; i<8; i++)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -