📄 24e1.lst
字号:
C51 COMPILER V7.02a 24E1 01/19/2006 15:39:26 PAGE 1
C51 COMPILER V7.02a, COMPILATION OF MODULE 24E1
OBJECT MODULE PLACED IN 24E1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 24E1.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*============================================================================================
2 Copyright (C), 2005, RegalCyber Tech. Co., Ltd.
3 File name: 24E1.C
4 Author: Zhangui Duan Version: v1.2 Date: 2005-3-30
5
6 Description:
7 此程序文件主要是完成无线数据的基本发送和传输。
8 1,nRF24E1的初始化控制
9 2,nRF24E1的数据发射与数据接收
10 3,串口数据打印
11 4,延时程序
12 5,在主程序main.c中调用这里面的函数
13 6,收发速度为1Mbps(最大),发送功率为-20dBm(最小)目的是缩短发送距离
14 Other Description:
15 由 Keil C51 V7.05 编译通过
16
17 Function List:
18 1. 对nRF2401子系统进行数据读写操作
19 unsigned char SpiReadWrite(unsigned char b);
20 2, 配置接收器
21 void Init_Receiver(void);
22 3, 接收数据块
23 void Receiver(unsigned char *rxbuf);
24 4, 发送数据块
25 void Transmitter(unsigned char txbuf[]);
26
27 History:
28 1. Date: 2005-6-12
29 Author:Zhangui Duan
30 Modification: 由于卡号要与普通的IC卡兼容,将卡号设置为4个字节,所以接收的有效数据宽度
31 由原来的40位改为48位(1字节前置码+4字节卡号+1字节校验字节)
32
33 ============================================================================================*/
34
35 #include <24e1.h>
36 #include "delay.h"
37 // #define FAR 1 //远距离发射
38
39 #define DATAT_W 0x60 //发送有效数据宽度:DATA2_W:48位,DATA1_W:48位
40 #define DATAR_W 0x70 //接收有效数据宽度:DATA2_W:48位,DATA1_W:48位
41 #ifdef FAR
#define RATE_POWER 0x4f //收发速度为250Kbps,发射功率为0dBm
#else
44 #define RATE_POWER 0x4c //收发速度为250Kbps,发射功率为-20dBm
45 #endif
46 unsigned char TxBuf[TNUM];//发送缓冲区
47 unsigned char RxBuf[RNUM];//接收缓冲区
48 unsigned char TRCOUNT; //发送数据计数器
49 unsigned char tconfbuf[2],rconfbuf[2];//发送和接收配置字的最后两个字节
50 //发送数据格式配置
51 RFConfig code tconf =
52 {
53 13,
54 DATAT_W, DATAT_W,//发送有效数据宽度:DATA2_W:48位,DATA1_W:48位
55 0x00, 0x00, 0x00, 0x00, 0x00,//ADDR2地址宽度
C51 COMPILER V7.02a 24E1 01/19/2006 15:39:26 PAGE 2
56 0x00,0xaa, 0xbb, 0x12, 0x34, //ADDR1地址宽度
57 0x83//, RATE_POWER,//250Kbps,0dBm
58 // 0x04
59 };
60
61 //接收数据格式配置
62 RFConfig code rconf =
63 {
64 13,
65 DATAR_W, DATAR_W, //接收有效数据宽度:DATA2_W:48位,DATA1_W:48位
66 0x00, 0x00, 0x00, 0x00, 0x00,//ADDR2地址宽度
67 0x00, 0xaa, 0xbb, 0x12, 0x34,//ADDR1地址宽度
68 0x83//, RATE_POWER, //250Kbps,0dBm
69 //0x05
70 };
71
72
73 /*********************************************************************************************
74 Function: SpiReadWrite
75 Description: 对nRF2401子系统进行数据读写操作
76 Calls:
77 Called By:
78 void Init_Receiver(void)
79 void Transmitter(unsigned char txbuf[])
80 Input: b
81 发送的时候是要发送的单个数据,接收的时候初始化值
82 Output:
83 Return: SPI_DATA
84 接收数据时是接收的数据
85 Others:
86 *********************************************************************************************/
87 unsigned char SpiReadWrite(unsigned char b)
88 {
89 1 EXIF &= ~0x20; // Clear SPI interrupt
90 1 SPI_DATA = b; // Move byte to send to SPI data register
91 1 while((EXIF & 0x20) == 0x00); // Wait until SPI hs finished transmitting
92 1 return SPI_DATA;
93 1 }
94
95
96
97
98
99 /*********************************************************************************************
100 Function: Init_Receiver
101 Description: 配置接收器的接收地址,接收数据长度,接收地址,
102 Calls: Delay100us();
103 SpiReadWrite();
104 Called By:
105 void main(void)
106 Input:
107 Output:
108 Return:
109 Others:
110 *********************************************************************************************/
111
112 void Init_Receiver(void)
113 {
114 1 unsigned char b;
115 1 CE = 0;
116 1 CS = 1; //打开配置方式
117 1
C51 COMPILER V7.02a 24E1 01/19/2006 15:39:26 PAGE 3
118 1 Delay100us(0);
119 1 for(b=0;b<rconf.n;b++)
120 1 {
121 2 SpiReadWrite(rconf.buf[b]);//发送接收器配置字
122 2 }
123 1 SpiReadWrite(rconfbuf[0]);
124 1 SpiReadWrite(rconfbuf[1]);
125 1 CS = 0; //关配置方式
126 1 CE = 1; //使能收发功能
127 1 }
128
129 /*********************************************************************************************
130 Function: Receiver
131 Description: 接收数据块
132 Calls: Delay100us();
133 SpiReadWrite();
134 Called By:
135 void main(void)
136 Input: *rxbuf
137 存储接收数据的数组的首地址
138 Output: 接收的数据存放在数据接收数组中
139 Return:
140 Others: 在调用此函数之前一定得调用函数Init_Receiver()
141 进行接收初始化配置
142
143 *********************************************************************************************/
144 void Receiver(unsigned char *rxbuf)
145 {
146 1 unsigned char rnum;
147 1 while(DR1==1)
148 1 {
149 2 for(rnum=0;rnum<RNUM;rnum++)
150 2 {
151 3 EXIF &= ~0x20; // Clear SPI interrupt
152 3 SPI_DATA = 0; // Write dummy byte to SPI data register
153 3 while((EXIF & 0x20) == 0x00) // Wait until SPI hs finished receiving
154 3 ;
155 3 rxbuf[TRCOUNT] = SPI_DATA;
156 3 //PutChar(rxbuf[TRCOUNT]);
157 3 TRCOUNT++;
158 3 if(TRCOUNT==RNUM)TRCOUNT=0;
159 3 Delay100us(3);
160 3 }
161 2 }
162 1 }
163
164 /*********************************************************************************************
165 Function: Transmitter
166 Description: 发送数据块
167 Calls: Delay100us();
168 SpiReadWrite();
169 Called By:
170 void main(void)
171 Input: txbuf[]
172 要发送的数据串
173 Output:
174 Return:
175 Others:
176 *********************************************************************************************/
177 void Transmitter(unsigned char txbuf[])
178 {
179 1 unsigned char i;
C51 COMPILER V7.02a 24E1 01/19/2006 15:39:26 PAGE 4
180 1 CS = 1; //开配置方式
181 1 Delay100us(0);
182 1 for(i=0;i<tconf.n;i++)
183 1 {
184 2 SpiReadWrite(tconf.buf[i]);//发送发送器配置字
185 2 }
186 1 SpiReadWrite(tconfbuf[0]);
187 1 SpiReadWrite(tconfbuf[1]);
188 1 CS = 0; //关配置方式
189 1
190 1 CE = 1; //nRF2401开始工作
191 1 Delay100us(0);
192 1 for(i=0;i<ADDR_COUNT;i++) //发送接收节点地址到nRF2401
193 1 SpiReadWrite(tconf.buf[ADDR_INDEX+i]);
194 1
195 1 for (i=0;i<TNUM;i++)
196 1 {
197 2 EXIF &= ~0x20; // Clear SPI interrupt
198 2 SPI_DATA = txbuf[i]; // Move byte to send to SPI data register
199 2 while((EXIF & 0x20) == 0x00) // Wait until SPI has finished transmitting
200 2 ;
201 2 //PutChar(txbuf[i]); //送串口显示
202 2 }
203 1 CE = 0; //激活ShockBurst发送
204 1 Delay100us(3); // Wait ~300us
205 1 }
206
207
208 void PutChar(char c)
209 {
210 1 while(!TI);
211 1 SBUF = c;
212 1 TI = 0;
213 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 238 ----
CONSTANT SIZE = 28 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 33 7
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 + -