?? 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 + -