?? f334.lst
字號:
C51 COMPILER V8.02 F334 07/13/2006 10:09:54 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE F334
OBJECT MODULE PLACED IN F334.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE source\F334.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\F334.lst) OBJECT(F334
-.obj)
line level source
1 //-----------------------------------------------------------------------------
2 // T2Cal33x.c
3 //-----------------------------------------------------------------------------
4 // Copyright 2002 Cygnal Integrated Products, Inc.
5 //
6 // AUTH: CATHY
7 // DATE: 04 FEB 03
8 // 資源配置情況:VREF既作為內部A/D基準,又輸出給外部電路
9 // 1根DA
10 // 3根A/D
11 // 4根串口現
12 // 1根復位
13 // 2根電源
14 // 一個定時器+
15 // 兩個GPIO,
16 // 3根SPI,
17 // Target: C8051F33x
18 // Tool chain: KEIL C51 6.03 / KEIL EVAL C51
19 // 程序說明:
20 //
21 // 用在帶GPS天線短路保護的便攜式SVA導航儀上
22 // SJQQC版本,帶日期輸出
23 // 帶天線短路告警,沒告警輸出為0,有告警輸出為85
24 // 算法改為:(X * 5 - Y)/ 25 = 角度 X:采樣數字 Y:基準
25 // 本程序用于500套正式生產
26 // 與SDA程序的區別:1.FM接口定義變動
27 // 2.增加日期
28 // 3.增加長按關機,同時給WINCE存盤提供時間
29 // 4.增加背光調節協議
30 //
31 //
32
33 //-----------------------------------------------------------------------------
34 // Includes
35 //-----------------------------------------------------------------------------
36
37 #include <c8051f330.h> // SFR declarations
38 #include<math.h>
39 #include <intrins.h>
40
41 //-----------------------------------------------------------------------------
42 // 16-bit SFR Definitions for 'F33x
43 //-----------------------------------------------------------------------------
44
45 sfr16 DAC0 = 0x96; // 10?DAC?????
46 //sfr16 TMR0RL = 0xca; // ???0???????
47 //sfr16 TMR1RL = 0xca; // ???1???????
48 sfr16 TMR2RL = 0xca; // ???2???????
49 sfr16 TMR3RL = 0x92; // ???3???????
50 //sfr16 TMR0 = 0xCC; // ???0?????
51 //sfr16 TMR1 = 0xCC; // ???1?????
52 sfr16 TMR2 = 0xcc; // ???2?????
53 sfr16 TMR3 = 0x94; // ???3?????
54 sfr16 ADC0 = 0xbd; // ADC Data Word Register
C51 COMPILER V8.02 F334 07/13/2006 10:09:54 PAGE 2
55
56
57 sbit BG_EN = P1^3;
58 sbit S2410_PWR = P1^4;//sbit S2410_PWR = P1^7;
59 sbit PWR_KEY = P1^6;
60 sbit LED_TEST = P1^7;
61
62 sbit bh_en = P0^7;
63 sbit bh_clk = P1^0;
64 sbit bh_data = P1^1;
65 //----------------------------------------------------------------------------
66 //global constant
67 //----------------------------------------------------------------------------
68 #define BAUDRATE 57600 //?????SW_UART???
69 #define SYSCLK 24500000 //????????18.432MHz
70 #define BAUDRATE1 9600
71 #define TIME_COUNT SYSCLK/BAUDRATE1/4
72 //#define TIME_COUNT SYSCLK/BAUDRATE/4 //????????PCA???
73 //(PCA?????SYSCLK/4??)
74
75 #define TH_TIME_COUNT TIME_COUNT*3/2 //3/2???,?????????
76 //??????????RX????
77 //?????????,????
78 //??????????????
79
80 #define TIMER2_RATE 20 // Timer 2 overflow rate in Hz
81 #define SAMPLE_RATE 50000
82
83 #define HeaderLength 6
84 #define UTCtimeLength 6
85 //----------------------------------------------------------------------------
86 //全局變量
87 //----------------------------------------------------------------------------
88 sbit GPS_SW = P1^5;
89 sbit SW_RX = P0^3; // SW_UART接收引腳
90 sbit SW_TX = P0^2; // SW_UART發送引腳
91 bit SRI; // SW_UART接收完成標志
92 bit STI; // SW_UART發送完成標志
93 bit SREN; // SW_UART接收允許
94 bit STXBSY; // SW_UART發送忙標志
95 char RDR; // SW_UART接收數據存儲器(鎖存器)
96 char TDR; // SW_UART發送數據寄存器
97
98 void PORT_Init(void); // Initialize Port I/O
99 void SYSCLK_Init (void); // Initialize Oscillator
100 void SW_UART_Init (void);
101 void UART0_Init (void);
102 void AD_Init (void);
103 void DA_Init (void);
104 void Timer0_Init (void);
105 void Timer2_Init (int);
106 void Timer3_Init (void);
107 void wait_one_second (void);
108 void Key_scan(void);
109 void Send_GPS(void);
110 void Variable_Init(void);
111 void Key_process(void);
112 void Measure(void);
113 void send_contr_word(unsigned int Cotrdata);
114 void Control_inf(unsigned char dx1,dx2,dx3);
115 void Delay_1uS(void);
116
C51 COMPILER V8.02 F334 07/13/2006 10:09:54 PAGE 3
117 unsigned int test;
118 unsigned int currval;
119 unsigned int DA_data;
120
121 unsigned char ii;
122 unsigned char tx_data;
123
124
125 unsigned char key_pre;
126 unsigned char key_work;
127 unsigned char key_scan_time;
128 unsigned int key_time;
129 unsigned char key_zt;
130 unsigned int LcdBackLight_Delay_AfterS2410;
131
132
133 unsigned char CRByte;
134 unsigned char LFByte;
135 unsigned char PulseCount;
136 unsigned char S_PulseCount[3];
137 unsigned char RecvByte;
138 unsigned char UartBuff;
139 unsigned char IsGpsFrame;
140 unsigned char FrameLength;
141 unsigned char Header[6];
142 unsigned char UTCtime[10];
143 unsigned char Longitude[10];
144 unsigned char Latitude[11];
145 unsigned char HDOP[4];
146 unsigned char DGPS;
147 unsigned char weixing[2];
148 unsigned char gps_ok;
149 unsigned char fm[4];
150 unsigned char fmbak;
151 unsigned char fmbak1;
152 unsigned char fmbak2;
153 unsigned char fmbak3;
154 unsigned char surt_js;
155 unsigned char he;
156 unsigned char FM_delay;
157 unsigned char FM_flag;
158
159 unsigned char S_Pulse_s[3];
160 unsigned char S_AdResult0[4]; //Ad Result backup for sending
161 unsigned char S_AdResult1[4]; //Ad Result backup for sending
162 unsigned char S_AdResult2[4]; //Ad Result backup for sending
163 unsigned char S_AdResult3[4]; //Ad Result backup for sending
164 unsigned char S_AdResult4[4]; //Ad Result backup for sending
165 unsigned char t1;
166
167 unsigned char ii;
168 unsigned int key_bg_time;
169 unsigned char POWER_SW_delay;
170
171 unsigned int zero_all;
172 unsigned int zero_front;
173 unsigned char zero_time;
174 unsigned int zero;
175 unsigned int zero_all_front;
176 unsigned char init_flag;
177 unsigned char zero_time1;
178 unsigned int zero_all1;
C51 COMPILER V8.02 F334 07/13/2006 10:09:54 PAGE 4
179 unsigned int zero_single;
180 unsigned char bujiu;
181 unsigned char bujiu_js;
182
183 unsigned char count_time;
184 unsigned char sample_time;
185 unsigned char Pulse_s;
186 unsigned char S_Pulse_s[3];
187
188 unsigned int AdResult[5];
189 unsigned int tempAdResult;
190 unsigned int tl;
191
192 unsigned int TL_Adresult;
193
194 unsigned int AdR[5];
195
196 unsigned int GPS_Current;
197 unsigned int GPS_Current_pre;
198
199 unsigned char riqi[6];
200 unsigned char GPS_Alarm[2];
201 unsigned int GPS_Alarm_js;
202 unsigned int GPS_time;
203
204 unsigned char b_light;
205
206 unsigned int key_press_time;
207
208 unsigned int test1;
209
210 //-----------------------------------------------------------------------------
211 // MAIN Routine
212 //-----------------------------------------------------------------------------
213
214 void main (void)
215 {
216 1
217 1 // Disable Watchdog timer
218 1 PCA0MD &= ~0x40; // WDTE = 0 (clear watchdog timer
219 1 // enable)
220 1 PORT_Init(); // Initialize Port I/O
221 1 SYSCLK_Init (); // Initialize Oscillator
222 1 SW_UART_Init ();
223 1 UART0_Init ();
224 1 DA_Init ();
225 1 AD_Init ();
226 1 Timer0_Init ();
227 1 Timer3_Init ();
228 1 Variable_Init();
229 1 // LED_EN=1;
230 1 EIE1 |= 0x10; // enable PCA interrupt
231 1 EIP1 |= 0x10;
232 1 ET0=1;
233 1 ES0=1;
234 1
235 1 Control_inf(88,0,1);
236 1 EA = 1;
237 1 DAC0=0x0000;
238 1 while(1)
239 1 {
240 2
C51 COMPILER V8.02 F334 07/13/2006 10:09:54 PAGE 5
241 2 if (key_scan_time>20)
242 2 {
243 3 key_scan_time=0;
244 3 Key_scan();
245 3 }
246 2
247 2 Key_process();
248 2
249 2 if (gps_ok>0)
250 2 {
251 3 if ((count_time>79) && (sample_time<4))
252 3 {
253 4 Measure();
254 4 AdR[sample_time]=TL_Adresult;
255 4 count_time=0;
256 4 sample_time++;
257 4 }
258 3 }
259 2 IsGpsFrame = 0;
260 2 if(IsGpsFrame) //if a GPS frame received
261 2 {
262 3 TR0=0; //stop count the pulse,send the last counter
263 3 S_Pulse_s[0]=((Pulse_s/100)+0X30); //hundred
264 3 S_Pulse_s[1]=((Pulse_s % 100)/10+0X30); //ten
265 3 S_Pulse_s[2]=(((Pulse_s % 100) % 10)+0X30); //one
266 3 Pulse_s=0;
267 3 TR0=1; //restart counter0
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -