?? lt8900_tx_main.lst
字號(hào):
C51 COMPILER V7.50 LT8900_TX_MAIN 03/08/2011 11:20:07 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LT8900_TX_MAIN
OBJECT MODULE PLACED IN LT8900_TX_Main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe LT8900_TX_Main.c DB OE BR
line level source
1 //----------------------------------------------------
2 // F342 Test Program
3 //----------------------------------------------------
4
5 #include <C8051F340.h> // SFR declarations
6 #include <intrins.h>
7 #include "LT8900.h"
8
9 #define _HIGHSPEED_SPI_ 1 //Debug SPI Interface
10 #define MAX_BUFFER_SIZE 8 // Maximum buffer Master will send
11 #define SYSCLK 12000000 // SYSCLK frequency in Hz
12 #define SPI_CLOCK 6000000
13
14 #define BAUDRATE 115200 // Baud rate of UART in bps
15 #define DELAY 5
16 #define BUFLEN 24
17 #define EBUFLEN 200
18
19 // SPI Instruction Set
20 #define SLAVE_LED_ON 0x01 // Turn the Slave LED on
21 #define SLAVE_LED_OFF 0x02 // Turn the Slave LED off
22 #define SPI_WRITE 0x04 // Send a byte from the Master to the
23 // Slave
24 #define SPI_READ 0x08 // Send a byte from the Slave to the
25 // Master
26 #define SPI_WRITE_BUFFER 0x10 // Send a series of bytes from the
27 // Master to the Slave
28 #define SPI_READ_BUFFER 0x20 // Send a series of bytes from the Slave
29 // to the Master
30 #define ERROR_OCCURRED 0x40 // Indicator for the Slave to tell the
31
32 unsigned char SPI_Data = 0xA5;
33
34 unsigned char SPI_Data_Array[MAX_BUFFER_SIZE] = {0};
35
36 bit Error_Flag = 0;
37
38 unsigned char Command = 0x00;
39
40 //---------------------------------------------------------------------
41 // Glabal Definition
42 //---------------------------------------------------------------------
43 sbit LED = P2^2; // LED='1' means ON
44 sbit SW = P2^0; // SW = '0' means button is pressed
45 sbit SIG = P2^7;
46
47 unsigned char RBUF[BUFLEN];
48 unsigned char TBUF[BUFLEN];
49 unsigned char xdata EBUF[EBUFLEN];
50 unsigned char tlen=0, channel=0x20;
51 signed char dlen;
52
53 unsigned char bdata R,RegH, RegL;
54 sbit H0 = RegH^0;
55 sbit H1 = RegH^1;
C51 COMPILER V7.50 LT8900_TX_MAIN 03/08/2011 11:20:07 PAGE 2
56 sbit H2 = RegH^2;
57 sbit H3 = RegH^3;
58 sbit H4 = RegH^4;
59 sbit H5 = RegH^5;
60 sbit H6 = RegH^6;
61 sbit H7 = RegH^7;
62
63 sbit L0 = RegL^0;
64 sbit L1 = RegL^1;
65 sbit L2 = RegL^2;
66 sbit L3 = RegL^3;
67 sbit L4 = RegL^4;
68 sbit L5 = RegL^5;
69 sbit L6 = RegL^6;
70 sbit L7 = RegL^7;
71
72 //subrouting
73 void putchar (char c);
74 void print_string (char pstring[]);
75 void delay_us (unsigned int us);
76 void Init_Device(void);
77 void UART0_Init (void);
78 void LT8900_Init(void);
79 void SPI0_Init (void); //new added by yfwen 2010.8
80
81 // SPI Related
82 #if (!_HIGHSPEED_SPI_)
extern unsigned char SPI_SendByte (unsigned char tbyte);
#else
85 unsigned char SPI_SendByte(unsigned char buf);
86 #endif
87 void SPI_SendFrame (void);
88 void SPI_CleanBuffer (void);
89
90 void LT_ReadReg(unsigned char reg);
91 void LT_WriteReg(unsigned char reg, unsigned char H, unsigned char L);
92 void LT_SetSyncWord (void);
93 void LT_StartTX(void);
94 void LT_StartRX(void);
95 void LT_StopRTX(void);
96 void LT_SetRFPower(unsigned char power);
97 unsigned char LT_GetRFPower(void);
98 void LT_DisableRSSI(void);
99 void LT_EnableRSSI(void);
100 void LT_ReadAllReg(void);
101 void LT_SetChannel(unsigned channel);
102 unsigned char LT_GetChannel(void);
103 void LT_CleanWFIFO(void);
104 void LT_RSSI_SCAN(unsigned char start_ch, unsigned char ch_no);
105 void LT_SendPacket(void);
106
107
108 //--------------------------------------------------
109 //Main Routing
110 //--------------------------------------------------
111 void main(void)
112 {
113 1 unsigned int i=0;
114 1 unsigned char j=0;
115 1
116 1 //Initialize F342
117 1 Init_Device();
C51 COMPILER V7.50 LT8900_TX_MAIN 03/08/2011 11:20:07 PAGE 3
118 1 SPI0_Init();
119 1 //UART0_Init();
120 1 LT8900_Init();
121 1 //Wait internal HF oscillator stable and set LED light to indicate.
122 1
123 1 RESET_N = 1; //Enable 8900
124 1 delay_us(5000); //delay 5ms to let LT8900 stable
125 1
126 1 SPI_CleanBuffer();
127 1 // LT_WriteReg(35, 0x83, 0x20);
128 1 //===================================================
129 1 // Test Code start
130 1 //===================================================
131 1 while(1)
132 1 {
133 2
134 2 #if 0 //Send out 64 bytes
// LT_WriteReg(7, 0x010, 0x20);
LT_CleanWFIFO();
LT_WriteReg(50, 64, 0);
while(j<31)
{
LT_WriteReg(50, j, 0x1e);
j++;
}
// LT_StartTX();
LT_WriteReg(7, 0x01, 0x20);
while (PKT_FLAG == 0);
#if SLEEP_MODE
LT_WriteReg(35,0x63,0x88);
SS = 1;
delay_us(2000);
SS = 0;
#endif
LT_WriteReg(7, 0x00, 0x20);
#endif
158 2
159 2 #if 1 //Send out 11 Byte
160 2
161 2 LT_CleanWFIFO();
162 2
163 2 LT_WriteReg(50, 11, 0);
164 2
165 2 LT_WriteReg(50, j, 0x1e);
166 2 LT_WriteReg(50, j, 0x1e);
167 2 LT_WriteReg(50, j, 0x1e);
168 2 LT_WriteReg(50, j, 0x1e);
169 2 LT_WriteReg(50, j, 0x1e);
170 2
171 2
172 2 // LT_StartTX
173 2
174 2 LT_WriteReg(7, 0x01, 0x20);
175 2 while (PKT_FLAG == 0);
176 2 delay_us(10000);
177 2 #if SLEEP_MODE
*** WARNING C322 IN LINE 177 OF LT8900_TX_Main.c: unknown identifier
LT_WriteReg(35,0x63,0x88);
C51 COMPILER V7.50 LT8900_TX_MAIN 03/08/2011 11:20:07 PAGE 4
SS = 1;
delay_us(2000);
SS = 0;
#endif
183 2 LT_WriteReg(7, 0x00, 0x20);
184 2 j++;
185 2 i++;
186 2 #endif
187 2 }
188 1 //===================================================
189 1 // Test Code Finish
190 1 //===================================================
191 1 }
192
193 //-------------------------------------------------------------
194 // Delay some micro second
195 //-------------------------------------------------------------
196 void delay_us (unsigned int us)
197 {
198 1 for (; us>0; us--);
199 1 }
200
201 //-------------------------------------------------------------
202 // Output a character to the UART
203 //-------------------------------------------------------------
204 void putchar (char c)
205 {
206 1 while (!TI0); //Wait until last transmit finish
207 1 TI0 = 0; //clean TX signal
208 1 if (c == '\n') //If is return, send LF/RT
209 1 {
210 2 SBUF0 = 0x0D;
211 2 while (!TI0);
212 2 SBUF0 = 0x0A;
213 2 }
214 1 else
215 1 SBUF0 = c;
216 1 }
217
218 //-------------------------------------------------------------
219 // Output a string to the UART
220 // return is supported
221 //-------------------------------------------------------------
222 void print_string (char pstring[])
223 {
224 1 unsigned char i = 0;
225 1 XBR0 = 0x01; //disable SPI
226 1 while (pstring[i])
227 1 {
228 2 putchar(pstring[i++]);
229 2 }
230 1 XBR0 = 0x03; //enable SPI
231 1 }
232
233 //=======================================================================
234 //--------------------------------------------------------------
235 // Initialization fuctions
236 //-------------------------------------------------------------
237 void Init_Device(void)
238 {
239 1 //Close watchdog
240 1 PCA0MD &= ~0x40; //disable watchdog
C51 COMPILER V7.50 LT8900_TX_MAIN 03/08/2011 11:20:07 PAGE 5
241 1
242 1 //Port IO Init
243 1 //P0MDOUT = 0x10; //P0.4 are push-pull, others are open-drain
244 1 P0MDOUT = 0x1D;
245 1 PKT_FLAG = 1;//
246 1 FIFO_FLAG = 1;
247 1 // P0SKIP = 0x00; //P0 skip P0.6 and P0.7
248 1 P1MDOUT = 0x1E; //P1.1~P1.4 is push-pull, P1.0 is open-drain for input
249 1 P1SKIP = 0xE0; //P1.0 ~ P1.4 are used, P1.5 ~ P1.7 skip
250 1 RESET_N = 0; //disable LT8900
251 1 P2MDIN &= ~0x20; //P2.5 is analog input
252 1 P2MDOUT = 0x04; //P2.2 is push-pull
253 1 P2SKIP = 0x03; //P2.0 and P2.1 are skip
254 1
255 1 //XBR0 = 0x01; //Enable UART
256 1 XBR0 = 0x03;
257 1 XBR1 = 0x40; //Enable Crossbar and weak pull-up
258 1
259 1 //Oscillator Init
260 1 OSCICN = 0x83; //internal HF clock, 12MHz
261 1 LED = 0;
262 1 while ( (OSCICN & 0x40) == 0);
263 1 LED = 1;
264 1 }
265
266 //-----------------------------------------------------------------------------
267 // SPI0_Init
268 //-----------------------------------------------------------------------------
269 //
270 // Return Value : None
271 // Parameters : None
272 //
273 // Configures SPI0 to use 4-wire Single Master mode. The SPI timing is
274 // configured for Mode 0,0 (data centered on first edge of clock phase and
275 // SCK line low in idle state).
276 //
277 //-----------------------------------------------------------------------------
278 void SPI0_Init()
279 {
280 1 SPI0CFG = 0x60; // Enable the SPI as a Master
281 1 // CKPHA = '0', CKPOL = '0'
282 1 SPI0CN = 0x0D; // 4-wire Single Master, SPI enabled
283 1
284 1 // SPI clock frequency equation from the datasheet
285 1 SPI0CKR = (SYSCLK/(2*SPI_CLOCK))-1;
286 1
287 1 //ESPI0 = 1; // Enable SPI interrupts
288 1 }
289
290 void UART0_Init (void)
291 {
292 1 // SCON0: 8-bit variable bit rate
293 1 // level of STOP bit is ignored
294 1 // RX enabled
295 1 // ninth bits are zeros
296 1 // clear RI0 and TI0 bits
297 1 SCON0 = 0x10;
298 1 CKCON = 0x08;
299 1 TH1 = 0xCC; //Using sysclk 12MHz and buad rate is 115200
300 1 TL1 = TH1; // Init Timer1
301 1 TMOD &= ~0xf0; // TMOD: timer 1 in 8-bit autoreload
302 1 TMOD |= 0x20;
C51 COMPILER V7.50 LT8900_TX_MAIN 03/08/2011 11:20:07 PAGE 6
303 1 TR1 = 1; // START Timer1
304 1 TI0 = 1; // Indicate TX0 ready
305 1 }
306
307 void LT8900_Init(void)
308 {
309 1 // unsigned char i;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -