📄 main.lst
字号:
C51 COMPILER V7.08 MAIN 04/13/2006 17:24:35 PAGE 1
C51 COMPILER V7.08, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <string.h>
2 #include <reg52.h>
3 #include <intrins.h>
4
5 #define INT8U unsigned char
6 #define INT16U unsigned int
7
8 #define FOSC 11059200
9 #define BAUD 9600
10 #define TIMER1 0XFD //256-(110592/(12*32*96))
11 #define TIMER0H (65535-3*FOSC/12/1000)/256
12 #define TIMER0L (65535-3*FOSC/12/1000)%256 //定时3MSVR
13 //--------------------------------------------------------------------------------------------------------
---
14 //内部寄存器定义
15 //--------------------------------------------------------------------------------------------------------
---
16 sfr P4 = 0xc0;
17 sfr ADC_CONTR = 0xC5;
18 sfr AUXR = 0x8E;
19 sfr ADC_DATA = 0xC6;
20 sfr P1_ADC_EN = 0x97;
21 //定义I/O口
22 sbit POW_UP = P3^5;
23 sbit CE = P3^4;
24 sbit DR2 = P3^3;
25 sbit SCK2 = P3^2;
26 sbit MOSI = P4^3;
27 sbit MISO = P1^7;
28 sbit SCK = P1^6;
29 sbit DOUT2 = P1^5;
30 sbit CS = P1^4;
31 sbit DR1 = P4^2;
32 sbit LED1 = P4^1;
33 sbit LED2 = P4^0;
34
35
36 /********************* I/O define end*****************************************************/
37
38
39 #define FRESELE 0x28 //频道选择
40 #define DATANUM 4 //有效数据位数
41
42 #define time0h (65535-3000)/256
43 #define time0l (65535-3000)%256 //定时3MS
44
45
46
47
48 INT8U CofigBuf[15]=
49 {
50 0x00, //接收频道二有效数据长度
51
52 40, //接收频道一有效数据长度
53
C51 COMPILER V7.08 MAIN 04/13/2006 17:24:35 PAGE 2
54 0x00,0x00,0x00,0x00,0x00, //接收频道二地址
55
56 0x00,0xcd,0xef,0x12,0xaa, //接收频道一地址
57
58 0x83, //32位地址,16位CRC,使能CRC
59 //bit7~2:ADDR_W,最大40位
60
61 //bit1:CRC_L
62 //Logic 0: 8 bit CRC
63 //Logic 1: 16 bit CRC
64
65
66 //BIT0:CRC_EN
67 //Logic 0: On-chip CRC generation/checking disabled
68 //Logic 1: On-chip CRC generation/checking enabled
69
70
71 0x4f, //ShockBurst模式,250 kbps,16M晶振,0dBm最大功率
72
73 //Bit 15:RX2_EN
74 //Logic 0: One channel receive
75 //Logic 1: Two channels receive
76
77 //Bit 14:
78 //Communication Mode:
79 //Logic 0: nRF2401 operates in direct mode.
80 //Logic 1: nRF2401 operates in ShockBurst. mode
81
82 //Bit 13:
83 //RF Data Rate:
84 //Logic 0: 250 kbps
85 //Logic 1: 1 Mbps
86
87 //Bit 12-10:Selects the nRF2401 crystal frequency to be used:
88 // D12 D11 D10 Crystal Frequency [MHz]
89 // 0 0 0 4
90 // 0 0 1 8
91 // 0 1 0 12
92 // 0 1 1 16
93 // 1 0 0 20
94
95 //Bit 9-8:RF_PWR: Sets nRF2401 RF output power in transmit mode:
96 // D9 D8 P [dBm]
97 // 0 0 -20
98 // 0 1 -10
99 // 1 0 -5
100 // 1 1 0
101
102
103
104 0x50 //2400+4*1=2404MHZ=2.404G,发送模式
105
106 //Bit 7 – 1:RF_CH#: Sets the frequency channel the nRF2401 operates on.
107 //Channelrf = 2400MHZ + RF_CH# * 1.0MHZ
108
109 //Bit 0:Set active mode:
110 //Logic 0: transmit mode
111 //Logic 1: receive mode
112 };
113
114
115 INT8U AddrCofig[4]={0xcd, 0xef, 0x12, 0xaa}; //地址
C51 COMPILER V7.08 MAIN 04/13/2006 17:24:35 PAGE 3
116 INT8U TxBuf[8]={0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00}; //发送绶冲区
117 INT8U RxBuf[8]={0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; //接收绶冲区
118 INT16U timer[2]; //超时计数器
119
120
121
122 /*****************************************************************************************
123 //函数名:void Delay100us(INT8U s)
124 //输入:时间
125 //输出:无
126 //功能描述:廷时
127 /*****************************************************************************************/
128 void Delay100us(INT8U n)
129 {
130 1 INT8U i;
131 1 while(n--)
132 1 {
133 2 for(i=0; i<35; i++);
134 2 }
135 1 }
136 /*****************************************************************************************
137 //函数名:delay(unsigned int s)
138 //输入:时间
139 //输出:无
140 //功能描述:普通廷时
141 /*****************************************************************************************/
142 delay(unsigned int s)
143 {
144 1 unsigned int i;
145 1 for(i=0; i<s; i++);
146 1 for(i=0; i<s; i++);
147 1 }
148 /*****************************************************************************************
149 //函数名:CpuInit()
150 //输入:无
151 //输出:无
152 //功能描述:SPI初始化程序
153 /*****************************************************************************************/
154 CpuInit(void)
155 {
156 1 POW_UP = 1;
157 1 Delay100us(40);
158 1 CE = 0;
159 1 CS = 0;
160 1 // SCK = 0;
161 1 }
162
163 /*****************************************************************************************
164 //函数名:void TimerInit(void)
165 //输入:无
166 //输出:无
167 //功能描述:定时器0初始化程序
168 /*****************************************************************************************/
169 void TimerInit(void)
170 {
171 1 TH0 = TIMER0H;
172 1 TL0 = TIMER0L;
173 1 ET0 = 1; //定时器0中断允许
174 1 TF0 = 0;
175 1 TR0 = 1; //启动定时器0
176 1 EA = 1; //开全局中断
177 1 }
C51 COMPILER V7.08 MAIN 04/13/2006 17:24:35 PAGE 4
178
179
180 /*****************************************************************************************
181 //函数名:ResetTimer(INT8U n)
182 //输入:要复位的计时器
183 //输出:无
184 //功能描述:复位计时器
185 /*****************************************************************************************/
186 void ResetTimer(INT8U n)
187 {
188 1 ET0 = 0; // Disable Timer0 interrupt
189 1 timer[n & 0x01] = 0; // Clear timer[n]
190 1 ET0 = 1; // Enable Timer0 interrupt
191 1 }
192
193
194 /*****************************************************************************************
195 //函数名:INT16U ReadTimer(INT8U n)
196 //输入:要读的计时器
197 //输出:读出值
198 //功能描述:读计时器
199 /*****************************************************************************************/
200 INT16U ReadTimer(INT8U n)
201 {
202 1 INT16U tmp;
203 1 ET0 = 0; // Disable Timer0 interrupt
204 1 tmp = timer[n]; // Clear timer[n]
205 1 ET0 = 1; // Enable Timer0 interrupt
206 1 return tmp;
207 1 }
208
209 /*****************************************************************************************
210 //函数名:UartInit()
211 //输入:无
212 //输出:无
213 //功能描述:串口初始化程序
214 /*****************************************************************************************/
215 void UartInit(void)
216 {
217 1 SCON = 0x50; //串口方式1,允许接收
218 1 TMOD = 0x21; //定时器1工作方式2,定时器0工作方式1
219 1 TH1 = TIMER1;
220 1 TL1 = TIMER1;
221 1 TR1 = 1; //启动定时器1
222 1 }
223
224
225 /*****************************************************************************************
226 //函数名:SendCh(ch)
227 //输入:无
228 //输出:无
229 //功能描述:串口发送一个字符
230 /*****************************************************************************************/
231 void SendCh(INT8U ch)
232 {
233 1 SBUF = ch;
234 1 while(!TI);
235 1 TI = 0;
236 1 }
237
238
239 /*****************************************************************************************
C51 COMPILER V7.08 MAIN 04/13/2006 17:24:35 PAGE 5
240 //函数名:void SpiWriteByte(INT8U dat)
241 //输入:发送的数据
242 //输出:无
243 //功能描述:SPI发送一个字节
244 /*****************************************************************************************/
245 void SpiWriteByte(INT8U dat)
246 {
247 1 INT8U i;
248 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -