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