📄 cc1100_rx.lst
字号:
C51 COMPILER V7.01 CC1100_RX 09/13/2006 17:53:03 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE CC1100_RX
OBJECT MODULE PLACED IN CC1100_RX.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE CC1100_RX.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg52.h>
2 #include <intrins.h>
3 #include "CC1100.h"
4
5
6 #define INT8U unsigned char
7 #define INT16U unsigned int
8
9 #define time0h (65535-1000)/256
10 #define time0l (65535-1000)%256 //定时1MS
11 #define WRITE_BURST 0x40 //连续写入
12 #define READ_SINGLE 0x80 //读
13 #define READ_BURST 0xC0 //连续读
14 #define BYTES_IN_RXFIFO 0x7F //接收缓冲区的有效字节数
15 #define CRC_OK 0x80 //CRC校验通过位标志
16
17
18
19 #define INT8U unsigned char
20 #define INT16U unsigned int
21
22 #define FOSC 11059200
23 #define BAUD 9600
24 #define TIMER1 0XFD //256-(110592/(12*32*96))
25 #define TIMER0H (65535-3*FOSC/12/1000)/256
26 #define TIMER0L (65535-3*FOSC/12/1000)%256 //定时3MSVR
27
28 //--------------------------------------------------------------------------------------------------------
---
29 //内部寄存器定义
30 //--------------------------------------------------------------------------------------------------------
---
31 //sfr P4 = 0xc0;
32 sfr ADC_CONTR = 0xC5;
33 sfr AUXR = 0x8E;
34 sfr ADC_DATA = 0xC6;
35 sfr P1_ADC_EN = 0x97;
36 sbit GDO0 = P3^3;//GDO1
37 sbit GDO2 = P3^2;//GDO2
38 //sbit DAT3 = P3^3;
39 sbit CSN =P1^2;//CSN
40 sbit MOSI=P1^5;//MOSI
41 sbit MISO=P1^6;//MISO
42 sbit SCK =P1^7;//SCK
43 //sbit DAT8 = P1^5;
44 //sbit DAT9 = P1^4;
45 //sbit DAT10 = P4^2;
46
47 //定义CC1100模块接口
48
49 /*
50 #define GDO1 DAT1
51 #define GDO2 DAT2
52 #define CSN DAT4
53 #define MOSI DAT5
C51 COMPILER V7.01 CC1100_RX 09/13/2006 17:53:03 PAGE 2
54 #define MISO DAT6
55 #define SCK DAT7
56 */
57 //sbit LED1 = P4^1;
58 //sbit LED2 = P4^0;
59
60 /****************************************************************************************
61 //全局变量定义
62 /****************************************************************************************/
63 INT16U TimeOutCount[2]={0,0}; //超时计数器
64 INT8U PaTabel[8] = {0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0};
65
66
67 //*****************************************************************************************
68 //函数名:delay(unsigned int s)
69 //输入:时间
70 //输出:无
71 //功能描述:普通廷时
72 //*****************************************************************************************
73 delay(unsigned int s)
74 {
75 1 unsigned int i;
76 1 for(i=0; i<s; i++);
77 1 for(i=0; i<s; i++);
78 1 }
79
80
81 void halWait(INT16U timeout) {
82 1 do {
83 2 _nop_();
84 2 _nop_();
85 2 _nop_();
86 2 _nop_();
87 2 _nop_();
88 2 _nop_();
89 2 _nop_();
90 2 _nop_();
91 2 _nop_();
92 2 _nop_();
93 2 _nop_();
94 2 _nop_();
95 2 _nop_();
96 2 _nop_();
97 2 _nop_();
98 2 } while (--timeout);
99 1 }
100
101 /*****************************************************************************************
102 //函数名:UartInit()
103 //输入:无
104 //输出:无
105 //功能描述:串口初始化程序
106 /*****************************************************************************************/
107 void UartInit(void)
108 {
109 1 SCON = 0x50; //串口方式1,允许接收
110 1 TMOD = 0x21; //定时器1工作方式2,定时器0工作方式1
111 1 TH1 = TIMER1;
112 1 TL1 = TIMER1;
113 1 TR1 = 1; //启动定时器1
114 1 }
115
C51 COMPILER V7.01 CC1100_RX 09/13/2006 17:53:03 PAGE 3
116
117 /*****************************************************************************************
118 //函数名:void TimerInit(void)
119 //输入:无
120 //输出:无
121 //功能描述:定时器0初始化程序
122 /*****************************************************************************************/
123 /*void TimerInit(void)
124 {
125 TH0 = TIMER0H;
126 TL0 = TIMER0L;
127 ET0 = 1; //定时器0中断允许
128 TF0 = 0;
129 TR0 = 1; //启动定时器0
130 EA = 1; //开全局中断
131 }*/
132
133 void SpiInit(void)
134 {
135 1 CSN=0;
136 1 SCK=0;
137 1 CSN=1;
138 1 }
139
140 /*****************************************************************************************
141 //函数名:CpuInit()
142 //输入:无
143 //输出:无
144 //功能描述:SPI初始化程序
145 /*****************************************************************************************/
146 CpuInit(void)
147 {
148 1 UartInit();
149 1 // TimerInit();
150 1 SpiInit();
151 1 delay(5000);
152 1 }
153
154 /*
155 //*****************************************************************************************
156 //函数名:ResetTimer(INT8U n)
157 //输入:要复位的计时器
158 //输出:无
159 //功能描述:复位计时器
160 //*****************************************************************************************
161 void ResetTimer(INT8U n)
162 {
163 ET0 = 0; // Disable Timer0 interrupt
164 timer[n & 0x01] = 0; // Clear timer[n]
165 ET0 = 1; // Enable Timer0 interrupt
166 }
167
168
169 //*****************************************************************************************
170 //函数名:INT16U ReadTimer(INT8U n)
171 //输入:要读的计时器
172 //输出:读出值
173 //功能描述:读计时器
174 //*****************************************************************************************
175 INT16U ReadTimer(INT8U n)
176 {
177 INT16U tmp;
C51 COMPILER V7.01 CC1100_RX 09/13/2006 17:53:03 PAGE 4
178 ET0 = 0; // Disable Timer0 interrupt
179 tmp = timer[n]; // Clear timer[n]
180 ET0 = 1; // Enable Timer0 interrupt
181 return tmp;
182 }
183 */
184 /*****************************************************************************************
185 //函数名:SendCh(ch)
186 //输入:无
187 //输出:无
188 //功能描述:串口发送一个字符
189 /*****************************************************************************************/
190 void SendCh(INT8U ch)
191 {
192 1 SBUF = ch;
193 1 while(!TI);
194 1 TI = 0;
195 1 }
196
197
198 /*****************************************************************************************
199 //函数名:void SendStr(INT8U *arr)
200 //输入:发送的字符串
201 //输出:无
202 //功能描述:发送一个字符串
203 /*****************************************************************************************/
204 void SendStr(INT8U *arr)
205 {
206 1 INT8U i;
207 1
208 1 i = 0;
209 1 while(arr[i] != '\0')
210 1 {
211 2 SendCh(arr[i]);
212 2 i++;
213 2 }
214 1 }
215
216 //*****************************************************************************************
217 //函数名:SpisendByte(INT8U dat)
218 //输入:发送的数据
219 //输出:无
220 //功能描述:SPI发送一个字节
221 //*****************************************************************************************
222 INT8U SpiTxRxByte(INT8U dat)
223 {
224 1 INT8U i,temp;
225 1 temp = 0;
226 1
227 1 SCK = 0;
228 1 for(i=0; i<8; i++)
229 1 {
230 2 if(dat & 0x80)
231 2 {
232 3 MOSI = 1;
233 3 }
234 2 else MOSI = 0;
235 2 dat <<= 1;
236 2
237 2 SCK = 1;
238 2 _nop_();
239 2 _nop_();
C51 COMPILER V7.01 CC1100_RX 09/13/2006 17:53:03 PAGE 5
240 2
241 2 temp <<= 1;
242 2 if(MISO)temp++;
243 2 SCK = 0;
244 2 _nop_();
245 2 _nop_();
246 2 }
247 1 return temp;
248 1 }
249
250 //*****************************************************************************************
251 //函数名:void RESET_CC1100(void)
252 //输入:无
253 //输出:无
254 //功能描述:复位CC1100
255 //*****************************************************************************************
256 void RESET_CC1100(void)
257 {
258 1 CSN = 0;
259 1 while (MISO);
260 1 SpiTxRxByte(CCxxx0_SRES); //写入复位命令
261 1 while (MISO);
262 1 CSN = 1;
263 1 }
264
265 //*****************************************************************************************
266 //函数名:void POWER_UP_RESET_CC1100(void)
267 //输入:无
268 //输出:无
269 //功能描述:上电复位CC1100
270 //*****************************************************************************************
271 void POWER_UP_RESET_CC1100(void)
272 {
273 1 CSN = 1;
274 1 halWait(1);
275 1 CSN = 0;
276 1 halWait(1);
277 1 CSN = 1;
278 1 halWait(41);
279 1 RESET_CC1100(); //复位CC1100
280 1 }
281
282 //*****************************************************************************************
283 //函数名:void halSpiWriteReg(INT8U addr, INT8U value)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -