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