📄 adc.lst
字号:
C51 COMPILER V7.50 ADC 08/29/2008 18:08:56 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE ADC
OBJECT MODULE PLACED IN ADC.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ADC.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "reg24e1.h"
2 #include "radio.h"
3 #include "delay.h"
4 #include "spi.h"
5
6 tRadioParm RadioParm;
7 tComParm ComParm;
8
9 #define RADIO_PACKET_SIZE 3
10 const unsigned char RFConfigBuf[15] =
11 {
12 0x08,RADIO_PACKET_SIZE<<3, //initial data packet size in bits
13 0x00,0x00,0x00,0x00,0x06, //RX channel 2 address
14 0x00,0x00,0x00,0x00,0x05, //RX channel 1 address
15 0x83, //32 address bits, 16 bit CRC
16 0xEF, //power set to 0dBm
17 0x05 //RF channel set to #25, RX on
18 };
19 //********************************************************
20 // Delay
21 void Delay100us(volatile unsigned char n)
22 {
23 1 unsigned char i;
24 1 while(n--)
25 1 for (i=0;i<35;i++) ;
26 1 }
27 void Delay5us(void)
28 {
29 1 unsigned char i;
30 1 for (i=0;i<2;i++) ;
31 1 }
32 //********************************************************
33 // SpiRadio
34 void SpiRadio(void)
35 {
36 1 SPICLK = 0; // Max SPI clock (XTAL/8)
37 1 P0_DIR &= ~0x20; // Set P0.5 as output
38 1 P0 |= 0x20; // Set P0.5 high to disable spi netburner chip select
39 1 SPI_CTRL = 0x02; // Connect internal SPI controller to Radio
40 1 }
41 //********************************************************
42 // SpiReadWrite
43 unsigned char SpiReadWrite(unsigned char b)
44 {
45 1 EXIF &= ~0x20;
46 1 SPI_DATA = b;
47 1 while((EXIF & 0x20) == 0x00) ;
48 1 return SPI_DATA;
49 1 }
50 //********************************************************
51 // SpiReadBuf
52 // SpiReadBuf(&RXbuf,n);
53 void SpiReadBuf(unsigned char* buf, unsigned char n)
54 {
55 1 unsigned char i;
C51 COMPILER V7.50 ADC 08/29/2008 18:08:56 PAGE 2
56 1 for (i=0;i<n;i++)
57 1 {
58 2 *buf = SpiReadWrite(0);
59 2 buf++;
60 2 }
61 1 }
62 //********************************************************
63 // SpiWriteBuf
64 // SpiWriteBuf(&TXbuf,n);
65 void SpiWriteBuf(unsigned char* buf, unsigned char n)
66 {
67 1 unsigned char i;
68 1 for (i=0;i<n;i++)
69 1 {
70 2 SpiReadWrite(*buf);
71 2 buf++;
72 2 }
73 1 }
74 //********************************************************
75 // RadioInit
76 void RadioInit(void)
77 {
78 1 unsigned char i;
79 1 unsigned char *cpt;
80 1 unsigned char *bpt;
81 1 cpt = &RFConfigBuf[0];
82 1 bpt = RadioCfgBufPt;
83 1 for (i=0;i<15;i++)
84 1 {
85 2 *bpt = *cpt;
86 2 bpt++;
87 2 cpt++;
88 2 }
89 1 }
90 //********************************************************
91 // RadioOn
92 void RadioOn(void)
93 {
94 1 PWR_UP = 1;
95 1 Delay100us(30);
96 1 SpiRadio();
97 1 }
98 //********************************************************
99 // RadioCfg
100 void RadioCfg(void)
101 {
102 1 CE = 0;
103 1 CS = 1;
104 1 Delay5us();
105 1 SpiWriteBuf(RadioCfgBufPt,RADIO_CFG_BYTES);
106 1 CS = 0;
107 1 CE = 1;
108 1 Delay5us();
109 1 }
110
111 //********************************************************
112 // RadioRXBuf
113 unsigned char RadioRXBuf(unsigned char *bufPt)
114 {
115 1 unsigned char r;
116 1 if(DR1 == 1)
117 1 {
C51 COMPILER V7.50 ADC 08/29/2008 18:08:56 PAGE 3
118 2 r = 1;
119 2 SpiReadBuf(bufPt,RadioParm.Data1>>3);
120 2 while(DR1==1)
121 2 SpiReadWrite(0);
122 2 }
123 1 else
124 1 {
125 2 r = 0;
126 2 }
127 1 return r;
128 1 }
129
130 void ChangeChannelTo04(unsigned char RXtx)//RXtx=1 RX RXtx=0 TX
131 {
132 1 CE=0; // CE=0 before configuration
133 1 Delay100us(0); // Delay min 5us before...
134 1 CS = 1; // ..CS=1
135 1 SpiReadWrite(0x04|RXtx); // Write LSB to RF config
136 1 CS = 0; // CS=0 to end configuration
137 1 if(RXtx) // If in RX mode...
138 1 {
139 2 Delay100us(0); // ..delay min 5us before..
140 2 CE = 1; // ..CE=1
141 2 }
142 1 }
143 void ChangeChannelTo14(unsigned char RXtx)//RXtx=1 RX RXtx=0 TX
144 {
145 1 CE=0; // CE=0 before configuration
146 1 Delay100us(0); // Delay min 5us before...
147 1 CS = 1; // ..CS=1
148 1 SpiReadWrite(0x14|RXtx); // Write LSB to RF config
149 1 CS = 0; // CS=0 to end configuration
150 1 if(RXtx) // If in RX mode...
151 1 {
152 2 Delay100us(0); // ..delay min 5us before..
153 2 CE = 1; // ..CE=1
154 2 }
155 1 }
156
157 void uart_init(void)
158 {
159 1 TH1 =243; // 19200@16MHz (when T1M=1 and SMOD=1)
160 1 CKCON |= 0x10; // T1M=1 (/4 timer clock)
161 1 PCON = 0x80; // SMOD=1 (double baud rate)
162 1 SCON = 0x52; // Serial mode1, enable receiver
163 1 TMOD = 0x20; // Timer1 8bit auto reload
164 1 TR1 = 1; // Start timer1
165 1 P0_DIR |= 0x02; // P0.1 (RxD) is an input
166 1 P0_ALT |= 0x06; // Select alternate functions on pins P0.1 and P0.2
167 1 }
168 unsigned char ReceivePacket()
169 {
170 1 unsigned char b;
171 1 ChangeChannelTo04(0x01);
172 1 while(RadioRXBuf(ComRXBufPt) == 0) ;
173 1
174 1 b = 0xFF;
175 1 while(TI==0);TI=0;SBUF=b;
176 1 while(TI==0);TI=0;SBUF=b;
177 1 b = ComParm.recADC1;
178 1 while(TI==0);TI=0;SBUF=b;
179 1 b = ComParm.recADC2;
C51 COMPILER V7.50 ADC 08/29/2008 18:08:56 PAGE 4
180 1 while(TI==0);TI=0;SBUF=b;
181 1 b = ComParm.recADC3;
182 1 while(TI==0);TI=0;SBUF=b;
183 1
184 1
185 1 ChangeChannelTo14(0x01);
186 1 while(RadioRXBuf(ComRXBufPt) == 0) ;
187 1
188 1 // b = 0xFF;
189 1 // while(TI==0);TI=0;SBUF=b;
190 1 // b = 0xFE;
191 1 // while(TI==0);TI=0;SBUF=b;
192 1 b = ComParm.recADC1;
193 1 while(TI==0);TI=0;SBUF=b;
194 1 b = ComParm.recADC2;
195 1 while(TI==0);TI=0;SBUF=b;
196 1 b = ComParm.recADC3;
197 1 while(TI==0);TI=0;SBUF=b;
198 1
199 1
200 1 Delay100us(100);
201 1 return b;
202 1 }
203
204 void Init(void)
205 {
206 1 P0_DIR = 0x40; // P0.6 is input, the rest output
207 1 P0 = 0x10; // P0.4 = 1 for the rec/tran selection
208 1 RadioInit();
209 1 RadioOn();
210 1 RadioCfg();
211 1 }
212 void main(void)
213 {
214 1 uart_init();
215 1 Init();
216 1
217 1 for(;;)
218 1 {
219 2 ReceivePacket();
220 2 }
221 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 464 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 40 8
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -