?? 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 + -