📄 send.lst
字号:
C51 COMPILER V9.01 SEND 02/25/2011 12:31:38 PAGE 1
C51 COMPILER V9.01, COMPILATION OF MODULE SEND
OBJECT MODULE PLACED IN send.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE send.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*********************************************************************
2 ** Device: A7125 **
3 ** File: main.c **
4 ** **
5 ** Description: **
6 ** This file is a sample code for your reference. **
7 ** **
8 ** Copyright (C) 2008 AMICCOM Corp. **
9 ** **
10 *********************************************************************/
11
12 #include <reg51.h>
13 #include "define.h"
14 #include "a7125reg.h"
15
16 //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
17 // I/O Declaration //
18 // TODO: USER NEED CHANGE THIS SET TO FIT SYSTEM. //
19 //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
20 sbit SCS = P1^7;
21 sbit SCK = P1^4;
22 sbit SDIO = P1^5;
23 sbit GIO1 = P1^3;
24 sbit GIO2 = P1^2;
25 sbit LED1 =P3^7;
26 sbit BUFF =P3^5;
27 #define RF_WTR GIO1
28
29 unsigned int cc;
30 unsigned char dd;
31 //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
32 // Global Variable Declaration //
33 //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
34 Uint8 idata RfBuf[64];
35 Uint8 idata TmpUint8;
36
37 //-----------------------------------------------------------------------------
38 // 64 bytes PN9 pseudo random code
39 //-----------------------------------------------------------------------------
40 const Uint8 code PN9_Tab[]=
41 { 0xFF,0x83,0xDF,0x17,0x32,0x09,0x4E,0xD1,
42 0xE7,0xCD,0x8A,0x91,0xC6,0xD5,0xC4,0xC4,
43 0x40,0x21,0x18,0x4E,0x55,0x86,0xF4,0xDC,
44 0x8A,0x15,0xA7,0xEC,0x92,0xDF,0x93,0x53,
45 0x30,0x18,0xCA,0x34,0xBF,0xA2,0xC7,0x59,
46 0x67,0x8F,0xBA,0x0D,0x6D,0xD8,0x2D,0x7D,
47 0x54,0x0A,0x57,0x97,0x70,0x39,0xD2,0x7A,
48 0xEA,0x24,0x33,0x85,0xED,0x9A,0x1D,0xE0
49 };
50
51 //-----------------------------------------------------------------------------
52 // RF ID code
53 //-----------------------------------------------------------------------------
54 const Uint8 code ID_Tab[4] =
55 {
C51 COMPILER V9.01 SEND 02/25/2011 12:31:38 PAGE 2
56 0x54, 0x75, 0xC5, 0x2A
57 };
58
59 // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
60 // NOTE !!
61 // !! THIS CONFIG TABLE ONLY USE ON RF CRYSTAL = 16MHz !!
62 // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
63 const Uint16 code A7125Config[] =
64 {
65 // address name Descript
66 // ------- ---- ---------
67 0x00, //0x00 MODE register, only reset, not use on config
68 0x62, //0x01 MODE CTRL register, FIFO mode, Enable ARSSI, Enable AIF
69 0x00, //0x02 CALIBRATION register,
70 0x3F, //0x03 FIFO1 register,
71 0x00, //0x04 FIFO2 register,
72 0x00, //0x05 FIFO register, for fifo read/write
73 0x00, //0x06 IDDATA register, for idcode
74 0x00, //0x07 RCOSC1 register,
75 0x00, //0x08 RCOSC2 register,
76 0x00, //0x09 RCOSC3 register,
77 0x00, //0x0A CKO register,
78 0x01, //0x0B GIO1 register, WTR
79 0x01, //0x0C GIO2 register, WTR
80 0x1F, //0x0D DATARATE register,
81 0x50, //0x0E PLL1 register,
82 0x0E, //0x0F PLL2 register, RFbase 2400.001MHz
83 0x96, //0x10 PLL3 register,
84 0x00, //0x11 PLL4 register,
85 0x04, //0x12 PLL5 register,
86 0x3C, //0x13 chanel group I,
87 0x78, //0x14 chanel group II,
88 0xD7, //0x15 TX1 register,
89 0x40, //0x16 TX2 register,
90 0x10, //0x17 DELAY1 register,
91 0x61, //0x18 DELAY2 register,
92 0x62, //0x19 RX register,
93 0xA0, //0x1A RXGAIN1 register,
94 0x00, //0x1B RXGAIN2 register,
95 0x00, //0x1C RXGAIN3 register,
96 0xD2, //0x1D RXGAIN4 register,
97 0x00, //0x1E RSSI register,
98 0xE2, //0x1F ADC register,
99 0x07, //0x20 CODE1 register,
100 0x56, //0x21 CODE2 register,
101 0x2A, //0x22 CODE3 register,
102 0x06, //0x23 IFCAL1 register,
103 0x00, //0x24 IFCAL2 register, only read
104 0x05, //0x25 VCOCCAL register,
105 0x44, //0x26 VCOCAL1 register,
106 0x80, //0x27 VCOCAL2 register,
107 0x30, //0x28 VCO DEV Cal. I register,
108 0x20, //0x29 VCO DEV Cal. II register,
109 0x80, //0x2A VCO DEV Cal. III register,
110 0x00, //0x2B VCO Mod. delay register
111 0x7A, //0x2C BATTERY register,
112 0x2F, //0x2D TXTEST register,
113 0x47, //0x2E RXDEM1 register,
114 0x80, //0x2F RXDEM2 register,
115 0xF1, //0x30 CPC1 register,
116 0x11, //0x31 CPC2 register,
117 0x04, //0x32 CRYSTAL register,
C51 COMPILER V9.01 SEND 02/25/2011 12:31:38 PAGE 3
118 0x45, //0x33 PLLTEST register,
119 0x18, //0x34 VCOTEST register,
120 0x10, //0x35 RF Analog Test
121 0xFF, //0x36 IFAT register,
122 0x37, //0x37 Channel select register,
123 0xFF //0x38 VRB register
124 };
125
126
127 /*********************************************************************
128 ** function Declaration
129 *********************************************************************/
130 void A7125_WriteReg(Uint8, Uint8);
131 Uint8 A7125_ReadReg(Uint8);
132 void StrobeCmd(Uint8 src);
133 void ByteSend(Uint8 src);
134 void A7125_Reset(void);
135 void A7125_WriteID(void);
136 void initRF(void);
137 void A7125_Config(void);
138 void A7125_Cal(void);
139 void WriteFIFO(Uint8 length);
140 void ReadFIFO(Uint8 length);
141 void Delay1ms(Uint16 n);
142 Uint8 ByteRead(void);
143 /*void timo_init()
144 {
145 TMOD=0X01;
146 TH0=0XDC;
147 TL0=0X00;
148 EA=1;
149 ET0=1;
150 TR0=1;
151
152 }
153 void timer(void) interrupt 1
154 {
155 TH0=0XDC;
156 TL0=0X00;
157 cc++;
158 if(cc>10)
159 {
160 cc=0;
161 dd=1;
162 }
163 }*/
164
165
166 /*********************************************************************
167 * main loop
168 *********************************************************************/
169 void main(void)
170 {
171 1 unsigned int aa;
172 1 unsigned int bb;
173 1 unsigned char flag;
174 1 Delay1ms(50); // 等待晶体稳定
175 1 LED1=0;
176 1 BUFF=1;
177 1 initRF();
178 1 StrobeCmd(CMD_STBY);
179 1 A7125_WriteReg( TXTEST_REG, 0x17 ); // 发送功率0DB
C51 COMPILER V9.01 SEND 02/25/2011 12:31:38 PAGE 4
180 1 // A7125_WriteReg( DATARATE_REG, 0x1F ); // 速率2M
181 1 A7125_WriteReg( DATARATE_REG, 0x5F ); // 1M
182 1 A7125_WriteReg( MODECTRL_REG, 0x62 ); // FIFO模式
183 1 A7125_WriteReg( PLL1_REG,160); // 频道10
184 1 A7125_WriteReg( CODE1_REG, 0x0F); // 使能CRC检测
185 1 //A7125_WriteReg(FIFO1_REG,8-1); // set FIFO length
186 1 WriteFIFO( 8 );
187 1 // timo_init();
188 1 // StrobeCmd(CMD_RX); // 写数据
189 1 while(1)
190 1 {
191 2 aa=0;
192 2 bb=0;
193 2 //cc=0;
194 2 flag=0;
195 2 // WriteFIFO( 8 );
196 2 // A7125_WriteReg(FIFO1_REG,8-1); // set FIFO length
197 2 StrobeCmd( CMD_TX ); //发送数据
198 2 while(GIO1); // 等待发送完成
199 2 GIO1=1;
200 2 A7125_WriteReg(FIFO1_REG,8-1); // set FIFO length
201 2 StrobeCmd(CMD_RX);
202 2 for(aa=0;aa<505;aa++)
203 2 {
204 3 // while(GIO1); // 等待数据传输完成
205 3 //GIO1=1;
206 3 //if(aa==503)
207 3 //{
208 3 //Delay1ms(1);
209 3 // }
210 3 if(GIO1==0)
211 3 {
212 4 GIO1=1;
213 4 flag=1;
214 4 break;
215 4 }
216 3
217 3 }
218 2 if(flag)
219 2 {
220 3 flag=0;
221 3 TmpUint8 = A7125_ReadReg(MODE_REG);
222 3 if((TmpUint8&0x20)==0)
223 3 {
224 4 ReadFIFO(8); //读数据
225 4 // LED1=~LED1;
226 4 // Delay1ms(720);
227 4 LED1=1;
228 4 BUFF=~BUFF;
229 4 Delay1ms(50);
230 4 //StrobeCmd( CMD_TX ); //发送数据
231 4 // A7125_WriteReg( PLL1_REG,160); // 频道10
232 4 }
233 3 //else
234 3 // {
235 3 // LED1=~LED1;
236 3 // Delay1ms(150);
237 3 // }
238 3
239 3 }
240 2 else
241 2 {
C51 COMPILER V9.01 SEND 02/25/2011 12:31:38 PAGE 5
242 3 // for(bb=0;bb<3;bb++)
243 3 // {
244 3 LED1=0;
245 3 // BUFF=~BUFF;
246 3 BUFF=1;
247 3 Delay1ms(200);
248 3 // }
249 3 //
250 3 // A7125_WriteReg( PLL1_REG,160); // 频道10
251 3 initRF();
252 3 // StrobeCmd( CMD_TX ); //发送数
253 3
254 3 }
255 2
256 2 }
257 1 }
258
259 /*********************************************************************
260 ** Err_State
261 *********************************************************************/
262 void Err_State(void)
263 {
264 1 //ERR display
265 1 //Error Proc...
266 1 while(1)
267 1 {
268 2 ;
269 2 }
270 1 }
271
272 /************************************************************************
273 ** A7125_WriteReg
274 ************************************************************************/
275 void A7125_WriteReg(Uint8 addr, Uint8 dataByte)
276 {
277 1 Uint8 i;
278 1
279 1 SCS = 0;
280 1 addr |= 0x00; //bit cmd=0,r/w=0
281 1 for(i = 0; i < 8; i++)
282 1 {
283 2 if(addr & 0x80)
284 2 SDIO = 1;
285 2 else
286 2 SDIO = 0;
287 2
288 2 SCK = 1;
289 2 _nop_();
290 2 SCK = 0;
291 2 addr = addr << 1;
292 2 }
293 1 _nop_();
294 1
295 1 //send data byte
296 1 for(i = 0; i < 8; i++)
297 1 {
298 2 if(dataByte & 0x80)
299 2 SDIO = 1;
300 2 else
301 2 SDIO = 0;
302 2
303 2 SCK = 1;
C51 COMPILER V9.01 SEND 02/25/2011 12:31:38 PAGE 6
304 2 _nop_();
305 2 SCK = 0;
306 2 dataByte = dataByte << 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -