📄 adc.lst
字号:
C51 COMPILER V7.50 ADC 08/30/2008 09:17:28 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 //********************************************************
52 // SpiWriteBuf
53 // SpiWriteBuf(&TXbuf,n);
54 void SpiWriteBuf(unsigned char* buf, unsigned char n)
55 {
C51 COMPILER V7.50 ADC 08/30/2008 09:17:28 PAGE 2
56 1 unsigned char i;
57 1 for (i=0;i<n;i++)
58 1 {
59 2 SpiReadWrite(*buf);
60 2 buf++;
61 2 }
62 1 }
63 //********************************************************
64 // RadioInit
65 void RadioInit(void)
66 {
67 1 unsigned char i;
68 1 unsigned char *cpt;
69 1 unsigned char *bpt;
70 1 cpt = &RFConfigBuf[0];
71 1 bpt = RadioCfgBufPt;
72 1 for (i=0;i<15;i++)
73 1 {
74 2 *bpt = *cpt;
75 2 bpt++;
76 2 cpt++;
77 2 }
78 1 }
79 //********************************************************
80 // RadioOn
81 void RadioOn(void)
82 {
83 1 PWR_UP = 1;
84 1 Delay100us(30);
85 1 SpiRadio();
86 1 }
87 //********************************************************
88 // RadioCfg
89 void RadioCfg(void)
90 {
91 1 CE = 0;
92 1 CS = 1;
93 1 Delay5us();
94 1 SpiWriteBuf(RadioCfgBufPt,RADIO_CFG_BYTES);
95 1 CS = 0;
96 1 CE = 1;
97 1 Delay5us();
98 1 }
99 //********************************************************
100 // RadioTXBuf
101
102 void RadioTXBuf(unsigned char *bufPt, unsigned char bytes)
103 {
104 1 CE = 0;
105 1 Delay100us(3);
106 1 // RadioParm.ChnRxTx &= ~0x01;
107 1 CS = 1;
108 1 // SpiReadWrite(RadioParm.ChnRxTx);
109 1 SpiReadWrite(0x04);
110 1 CS = 0;
111 1 Delay5us();
112 1 CE = 1;
113 1 Delay5us();
114 1 SpiWriteBuf(bufPt, bytes);
115 1 CE = 0;
116 1 Delay100us(5);
117 1 }
C51 COMPILER V7.50 ADC 08/30/2008 09:17:28 PAGE 3
118
119 //********************************************************
120 // AdcInit
121 void AdcInit(void)
122 {
123 1 ADCCON = 0X30;
124 1 EXIF &= ~0x10;
125 1 ADCSTATIC |= 0x21; //8 bit
126 1 }
127 /*unsigned int AdcRead(unsigned char channel)
128 {
129 unsigned int i;
130 ADCCON = 0x20 + channel;
131 Delay5us();
132 ADCCON |= 0X80;
133 Delay5us();
134 while((EXIF & 0X10) == 0) ;
135 EXIF &= ~0x10;
136 i = ADCDATAL + (((unsigned int) ADCDATAH)<<8);
137 return i;
138 }
139
140 */
141 unsigned char AdcRead(unsigned char channel)
142 {
143 1 unsigned char i;
144 1 ADCCON = 0x20 + channel;
145 1 Delay5us();
146 1 ADCCON |= 0X80;
147 1 Delay5us();
148 1 while((EXIF & 0X10) == 0) ;
149 1 EXIF &= ~0x10;
150 1 i = ADCDATAH;
151 1 return i;
152 1 }
153 void Transmitter(void)
154 {
155 1 unsigned int i;
156 1
157 1 ComParm.TXAddress3 = 0x00; // Set up transmit address
158 1 ComParm.TXAddress2 = 0x00;
159 1 ComParm.TXAddress1 = 0x00;
160 1 ComParm.TXAddress0 = 0x05;
161 1
162 1 for(;;)
163 1 {
164 2 AdcInit();
165 2 i = AdcRead(1);
166 2 ComParm.adcData1 = i;
167 2 AdcInit();
168 2 i = AdcRead(2);
169 2 ComParm.adcData2 = i;
170 2 AdcInit();
171 2 i = AdcRead(4);
172 2 ComParm.adcData3 = i;
173 2
174 2
175 2 RadioTXBuf(ComTXBufPt,COM_TX_BYTES); // Transmit data
176 2 Delay100us(13);
177 2 }
178 1 }
179 void Init(void)
C51 COMPILER V7.50 ADC 08/30/2008 09:17:28 PAGE 4
180 {
181 1 P0_DIR = 0x40; // P0.6 is input, the rest output
182 1 P0 = 0x10; // P0.4 = 1 for the rec/tran selection
183 1 RadioInit();
184 1 RadioOn();
185 1 RadioCfg();
186 1 }
187 void main(void)
188 {
189 1 AdcInit();
190 1 Init();
191 1
192 1 for(;;)
193 1 {
194 2 Transmitter();
195 2 }
196 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 350 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 40 9
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 + -