📄 main.lst
字号:
C51 COMPILER V7.20 MAIN 09/04/2008 13:22:12 PAGE 1
C51 COMPILER V7.20, 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 <reg931.h>
2 #include <intrins.h>
3
4 #define uchar unsigned char
5 #define uint unsigned int
6 #define FALSE 0
7 //-------------------------------------------------------------------------------------------------------
8 typedef unsigned char BOOL;
9
10 // Data
11 typedef unsigned char BYTE;
12 typedef unsigned short WORD;
13 typedef unsigned long DWORD;
14 /*******************************************************************************************/
15 /*//////////////////// LCD12864 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\
16 /********************************************************************************************/
17 //LCD 引脚定义
18 sbit SCLK = P0^1;
19 sbit SID = P2^0;
20 sbit A0 = P0^0;
21 sbit CS1 = P1^7;
22 sbit RES = P2^1;
23
24 uchar code ComTable[]={3,2,1,0,7,6,5,4,};
25
26 #define DISPLAY_ON() Write_Instruction(0xaf) // Display on
27 #define DISPLAY_OFF() Write_Instruction(0xae) // Display off
28 #define SET_ADC() Write_Instruction(0xa1) // Reverse disrect (SEG131-SEG0)
29 #define CLEAR_ADC() Write_Instruction(0xa0) // Normal disrect (SEG0-SEG131)
30 #define REVERSE_DISPLAY_ON() Write_Instruction(0xa7) // Reverse display : 0 illuminated
31 #define REVERSE_DISPLAY_OFF() Write_Instruction(0xa6) // Normal display : 1 illuminated
32 #define ENTIRE_DISPLAY_ON() Write_Instruction(0xa5) // Entire dislay Force whole LCD point
33 #define ENTIRE_DISPLAY_OFF() Write_Instruction(0xa4) // Normal display
34 #define SET_BIAS() Write_Instruction(0xa3) // bias 1
35 #define CLEAR_BIAS() Write_Instruction(0xa2) // bias 0
36 #define SET_MODIFY_READ() Write_Instruction(0xe0) // Stop automatic increment of the column address
- by the read instruction
37 #define RESET_MODIFY_READ() Write_Instruction(0xee) // Cancel Modify_read, column address return to i
-ts initial value just before the Set Modify Read instruction is started
38 #define RESET() Write_Instruction(0xe2)
39 #define SET_SHL() Write_Instruction(0xc8) // SHL 1,COM63-COM0
40 #define CLEAR_SHL() Write_Instruction(0xc0) // SHL 0,COM0-COM63
41
42 /*******************************************************************************************/
43 /*//////////////////// CC2500 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*\
44 /********************************************************************************************/
45 sbit SPI_CS = P0^2;
46 sbit SPI_SI = P0^5;
47 sbit SPI_SO = P0^3;
48 sbit SPI_SCK = P0^4;
49 //sbit SPI_GDO0 = P1^6;
50
51 //#define REPORT_LEN 8
52 #define PACKAGE_LEN 64
53
C51 COMPILER V7.20 MAIN 09/04/2008 13:22:12 PAGE 2
54 xdata uchar rxBuffer[PACKAGE_LEN];
55 // CC2500 状态
56 //#define CCxxx0_Ready() SO
57 #define CRC_OK 0x80
58 #define BYTES_IN_RXFIFO 0x7F //突发访问TX FIFO
59 #define STATE_IDLE 0x01
60 #define RSSI 0
61 #define LQI 1
62
63 // Definitions to support burst/single access:
64 #define WRITE_BURST 0x40
65 #define READ_SINGLE 0x80
66 #define READ_BURST 0xC0
67
68 //CC2500配置寄存器位于SPI地址从0x00到0x2F之间
69 #define CCxxx0_IOCFG2 0x00 // GDO2 输出脚配置
70 #define CCxxx0_IOCFG1 0x01 // GDO1 输出脚配置
71 #define CCxxx0_IOCFG0 0x02 // GDO0 输出脚配置
72 #define CCxxx0_FIFOTHR 0x03 // RX FIFO and TX FIFO 门限
73 #define CCxxx0_SYNC1 0x04 // 同步词汇,高字节
74 #define CCxxx0_SYNC0 0x05 // 同步词汇,低字节
75 #define CCxxx0_PKTLEN 0x06 // 数据包长度
76 #define CCxxx0_PKTCTRL1 0x07 // 数据包自动控制
77 #define CCxxx0_PKTCTRL0 0x08 // 数据包自动控制
78 #define CCxxx0_ADDR 0x09 // 设备地址
79 #define CCxxx0_CHANNR 0x0A // 信道数
80 #define CCxxx0_FSCTRL1 0x0B // 频率合成器控制
81 #define CCxxx0_FSCTRL0 0x0C // 频率合成器控制
82 #define CCxxx0_FREQ2 0x0D // 频率控制词汇,高字节
83 #define CCxxx0_FREQ1 0x0E // 频率控制词汇,中间字节
84 #define CCxxx0_FREQ0 0x0F // 频率控制词汇,低字节
85 #define CCxxx0_MDMCFG4 0x10 // 调制器配置
86 #define CCxxx0_MDMCFG3 0x11 // 调制器配置
87 #define CCxxx0_MDMCFG2 0x12 // 调制器配置
88 #define CCxxx0_MDMCFG1 0x13 // 调制器配置
89 #define CCxxx0_MDMCFG0 0x14 // 调制器配置
90 #define CCxxx0_DEVIATN 0x15 // 调制器背离设置
91 #define CCxxx0_MCSM2 0x16 // 主通信控制状态机配置
92 #define CCxxx0_MCSM1 0x17 // 主通信控制状态机配置
93 #define CCxxx0_MCSM0 0x18 // 主通信控制状态机配置
94 #define CCxxx0_FOCCFG 0x19 // 频率偏移补偿配置
95 #define CCxxx0_BSCFG 0x1A // 位同步配置
96 #define CCxxx0_AGCCTRL2 0x1B // AGC控制
97 #define CCxxx0_AGCCTRL1 0x1C // AGC控制
98 #define CCxxx0_AGCCTRL0 0x1D // AGC控制
99 #define CCxxx0_WOREVT1 0x1E // 高字节时间0暂停
100 #define CCxxx0_WOREVT0 0x1F // 低字节时间0暂停
101 #define CCxxx0_WORCTRL 0x20 // 电磁波激活控制
102 #define CCxxx0_FREND1 0x21 // 前末端RX配置
103 #define CCxxx0_FREND0 0x22 // 前末端TX配置
104 #define CCxxx0_FSCAL3 0x23 // 频率合成器校准
105 #define CCxxx0_FSCAL2 0x24 // 频率合成器校准
106 #define CCxxx0_FSCAL1 0x25 // 频率合成器校准
107 #define CCxxx0_FSCAL0 0x26 // 频率合成器校准
108 #define CCxxx0_RCCTRL1 0x27 // RC振荡器配置
109 #define CCxxx0_RCCTRL0 0x28 // RC振荡器配置
110 #define CCxxx0_FSTEST 0x29 // 频率合成器校准控制
111 #define CCxxx0_PTEST 0x2A // 产品测试
112 #define CCxxx0_AGCTEST 0x2B // AGC 测试
113 #define CCxxx0_TEST2 0x2C // 不同的测试设置
114 #define CCxxx0_TEST1 0x2D // 不同的测试设置
115 #define CCxxx0_TEST0 0x2E // 不同的测试设置
C51 COMPILER V7.20 MAIN 09/04/2008 13:22:12 PAGE 3
116
117
118 //对0x30-0x3D间的地址来说,突发位用以在状态寄存器和命令滤波之间选择(如下)。
119 //状态寄存器只读。突发读取对状态寄存器是不可取的,故它们每次只能被读一个。
120
121 //命令滤波 这些命令用来关闭晶体振荡器,开启传输模式和电磁波激活等
122 #define CCxxx0_SRES 0x30 // 重启芯片
123 #define CCxxx0_SFSTXON 0x31 // 开启和校准频率合成器(若MCSM0.FS_AUTOCAL=1)
124 #define CCxxx0_SXOFF 0x32 // 关闭晶体振荡器
125 #define CCxxx0_SCAL 0x33 // 校准频率合成器并关断(开启快速启动)
126 #define CCxxx0_SRX 0x34 // 启用RX。若上一状态为空闲且MCSM0.FS_AUTOCAL=1则首先运行校准。
127 #define CCxxx0_STX 0x35 // 空闲状态:启用TX。若MCSM0.FS_AUTOCAL=1首先运行校准。
128 // 在RX状态且CCA启用:若信道为空则进入TX
129 #define CCxxx0_SIDLE 0x36 // 离开RX/TX,关断频率合成器并离开电磁波激活模式若可用
130 #define CCxxx0_SAFC 0x37 // 运行频率合成器的AFC调节
131 #define CCxxx0_SWOR 0x38 // 运行自动RX选举序列(电磁波激活)
132 #define CCxxx0_SPWD 0x39 // 当CSn为高时进入功率降低模式。
133 #define CCxxx0_SFRX 0x3A // 冲洗RX FIFO缓冲
134 #define CCxxx0_SFTX 0x3B // 冲洗TX FIFO缓冲
135 #define CCxxx0_SWORRST 0x3C // 重新设置真实时间时钟
136 #define CCxxx0_SNOP 0x3D // 无操作. 可能用来为更简单的软件将滤波命令变为2字节。
137
138 //状态寄存器
139 #define CCxxx0_PARTNUM 0x30 //CC2550的组成部分数目
140 #define CCxxx0_VERSION 0x31 //当前版本数
141 #define CCxxx0_FREQEST 0x32 //频率偏移估计
142 #define CCxxx0_LQI 0x33 //连接质量的解调器估计
143 #define CCxxx0_RSSI 0x34 //接收信号强度指示
144 #define CCxxx0_MARCSTATE 0x35 //控制状态机状态
145 #define CCxxx0_WORTIME1 0x36 //WOR计时器高字节
146 #define CCxxx0_WORTIME0 0x37 //WOR计时器低字节
147 #define CCxxx0_PKTSTATUS 0x38 //当前GDOx状态和数据包状态
148 #define CCxxx0_VCO_VC_DAC 0x39 //PLL校准模块的当前设定
149 #define CCxxx0_TXBYTES 0x3A //TX FIFO中的下溢和比特数
150 #define CCxxx0_RXBYTES 0x3B //RX FIFO中的下溢和比特数
151 #define CCxxx0_RCCTRL1_STATUS 0x3C //RC振荡器状态
152 #define CCxxx0_RCCTRL0_STATUS 0x3D
153
154 #define CCxxx0_PATABLE 0x3E //用来选择PA能量控制设置
155 #define CCxxx0_TXFIFO 0x3F //单字节访问TX FIFO
156 #define CCxxx0_RXFIFO 0x3F
157
158 uchar package[64];
159 void SPI_WAIT()
160 {
161 1 uchar i;
162 1 for (i=0; i<10; i++);
163 1 }
164 void halWait(uint timeout)
165 {
166 1 do {
167 2 _nop_();
168 2 _nop_();
169 2 _nop_();
170 2 _nop_();
171 2 _nop_();
172 2 _nop_();
173 2 _nop_();
174 2 _nop_();
175 2 _nop_();
176 2 _nop_();
177 2 _nop_();
C51 COMPILER V7.20 MAIN 09/04/2008 13:22:12 PAGE 4
178 2 _nop_();
179 2 _nop_();
180 2 _nop_();
181 2 } while (--timeout);
182 1 }
183 void OpenSpi()
184 {
185 1 SPI_SCK =0;
186 1 SPI_SI =0;
187 1 SPI_CS =0;
188 1 while (SPI_SO);
189 1 }
190
191 void CloseSpi()
192 {
193 1 SPI_CS =1;
194 1 }
195 void WriteByte(uchar Data)
196 {
197 1 uchar i;//,temp_si;
198 1 for (i=0; i<8; i++)
199 1 {
200 2 if (Data&0x80)
201 2 SPI_SI=1;
202 2 else
203 2 SPI_SI=0;
204 2 _nop_();
205 2 _nop_();
206 2 _nop_();
207 2
208 2 SPI_SCK=1;
209 2 _nop_();
210 2 _nop_();
211 2 _nop_();
212 2 _nop_();
213 2 SPI_SCK=0;
214 2
215 2 Data<<=1;
216 2 }
217 1 }
218 uchar ReadByte()
219 {
220 1 uchar i;
221 1 uchar Data;
222 1
223 1 for (i=0; i<8; i++)
224 1 {
225 2
226 2 Data<<=1;
227 2 _nop_();
228 2 _nop_();
229 2
230 2 SPI_SCK=0;
231 2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -