?? aaa.lst
字號:
C51 COMPILER V7.50 AAA 09/12/2005 06:33:21 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE AAA
OBJECT MODULE PLACED IN aaa.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE aaa.c OPTIMIZE(0,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <upsd3300.h>
2 #include <intrins.h>
3 #include <string.h>
4 #include <absacc.h>
5 //#include "upsd33_adc.h"
6 //#include <Turbo_adc.h>
7 //#include <Turbo_timer.h>
8 //#include <Turbo_PCA-PWM.h>
9 //#include <test.h>
10
11 #define uchar unsigned char
12 #define uint unsigned int
13
14 //#define PSD_REG_ADDR 0x0800 //PSD寄存器IO基址
15 #define scan P3 //鍵掃
16 #define POWK P1_7 //交流接觸器開關,0有效
17 #define POWZ P4_7 //電阻短接,0有效
18 #define ST P4_6 //脈沖使能
19
20 #define RS P1_6 //液晶命令口
21 #define RW P1_5
22 #define E P1_4
23 #define PSD_REG_ADDR 0x0200
24
25 /*********管腳定義****************/
26 //#define lcdport PSD33_reg.DATAOUT_A //P4 //P4液晶數據口,必須用雙通道IO
27
28
29 xdata PSD_REGS PSD33_reg _at_ PSD_REG_ADDR ;
30
31 uchar bdata temp; //判忙用字節
32 sbit busy = temp^7;
33 uchar keyv ;
34 uchar pinlv[3] = {0,0,0}; //頻率值
35 uchar dianya[2] = {0,0}; //電壓值
36 //uchar mm[3] = {1,6,0}; //調制度,30-210
37 uchar code OK[]={"OK"};
38
39 uchar i;
40 /******************************************************************************
41 * PWM變量定義
42
43 ******************************************************************************/
44 /*------------------------------------------------------------------------------
45 Local Variable Declarations
46 ------------------------------------------------------------------------------*/
47 //時鐘周期為30ns,(板上33.1776M晶振)
48 //固定頻率采樣,載波頻率5K,周期200us,計數值=200us/(30ns*12)=556
49 //采樣周期 = 1/2載波周期 = 278
50
51
52
53 //long Fc;
54 long idata F;
55 long idata F_min;
C51 COMPILER V7.50 AAA 09/12/2005 06:33:21 PAGE 2
56 uint data N; //載波比
57 long data M; //調制系數
58
59
60
61
62 uint data Ts; //采樣周期 = 1/2 載波周期
63 long data Half_Ts; //1/2采樣周期
64
65 long idata K_M; //調制系數放大倍數
66 long idata K_F; //輸入頻率放大倍數
67
68 //uint idata K_sin; //sin表放大倍數
69 //uint idata K_coe; //總放大倍數,K_M * K_sin;
70
71
72
73
74 //int idata dead_time;
75 uint data U_angle;
76 uint data V_angle;
77 uint data W_angle;
78
79 uint data K; //采樣個數,偶數為頂點采樣,奇數為底點采樣
80 uint data U_Toff; //頂點采樣開通延時
81 uint data U_Ton; //底點采樣關斷延時
82 uint data V_Toff;
83 uint data V_Ton;
84 uint data W_Toff;
85 uint data W_Ton;
86
87 uint Tm;
88 code uint u36 = 0x125;
89
90
91 unsigned char data P_flag,aa; //奇偶采樣點標志
92
93 static unsigned int idata timer0_tick;
94 static unsigned int idata timer0_value;
95
96 static unsigned int idata timer1_tick;
97 static unsigned int idata timer1_value;
98
99
100 int data M_angle;
101
102 unsigned long idata Fm;
103
104
105 unsigned int data PCA0;
106
107
108 //0--180度正弦表
109
110 //unsigned long code sin_table[181] = { 0,286/64,572/64,857/64,1143/64,1428/64,1713/64,1997/64,2280/64,
-2563/64,2845,
111 // 3126,3406,3686,3964,4240,4516,4790,5063,5334,5604,
112 // 5872,6138,6402,6664,6924,7182,7438,7692,7943,8192,
113 // 8438,8682,8923,9162,9397,9630,9860,10087,10311,10531,
114 // 10749,10963,11174,11381,11585,11786,11982,12176,12365,12551,
115 // 12733,12911,13085,13255,13421,13583,13741,13894,14044,14189,
116 // 14330,14466,14598,14726,14849,14968,15082,15191,15296,15396,
C51 COMPILER V7.50 AAA 09/12/2005 06:33:21 PAGE 3
117 // 15491,15582,15668,15749,15826,15897,15964,16026,16083,16135,
118 // 16182,16225,16262,16294,16322,16344,16362,16374,16382,16384,
119 // 16382,16374,16362,16344,16322,16294,16262,16225,16182,16135,
120 // 16083,16026,15964,15897,15826,15749,15668,15582,15491,15396,
121 // 15296,15191,15082,14968,14849,14726,14598,14466,14330,14189,
122 // 14044,13894,13741,13583,13421,13255,13085,12911,12733,12551,
123 // 12365,12176,11982,11786,11585,11381,11174,10963,10749,10531,
124 // 10311,10087,9860,9630,9397,9162,8923,8682,8438,8192,
125 // 7943,7692,7438,7182,6924,6664,6402,6138,5872,5604,
126 // 5334,5063,4790,4516,4240,3964,3686,3406,3126,2845,
127 // 2563,2280,1997,1713,1428,1143,857,572,286,0};
128
129 unsigned char code sin_table[181] = { 0,4,9,13,18,22,27,31,35,40,
130 44,49,53,57,62,66,70,75,79,83,
131 87,91,96,100,104,108,112,116,120,124,
132 128,131,135,139,143,146,150,153,157,160,
133 164,167,171,174,177,180,183,186,190,192,
134 195,198,201,204,206,209,211,214,216,219,
135 221,223,225,227,229,231,233,235,236,238,
136 240,241,243,244,245,246,247,248,249,250,
137 251,252,253,253,254,254,254,255,255,255,
138 255,255,255,255,254,254,254,253,253,252,
139 251,250,249,248,247,246,245,244,243,241,
140 240,238,236,235,233,231,229,227,225,223,
141 221,219,216,214,211,209,206,204,201,198,
142 195,192,190,186,183,180,177,174,171,167,
143 164,160,157,153,150,146,143,139,135,131,
144 128,124,120,116,112,108,104,100,96,91,
145 87,83,79,75,70,66,62,57,53,48,
146 44,40,35,31,27,22,18,13,9,4,0 };
147
148 /********************************************************************
149 *鍵盤碼
150 ********************************************************************/
151 uchar code key_tab[] =
152 {
153 0x01,0x02,0x03,0x0a,
154 0x04,0x05,0x06,0x0b,
155 0x07,0x08,0x09,0x0c,
156 0x0f,0x00,0x0e,0x0d,
157 };
158
159
160 /********************************************************************/
161 /*******************************函數聲明*****************************/
162 /********************************************************************/
163
164 /*---------------------------------------------------------------
165 * LCD函數聲明
166 *---------------------------------------------------------------*/
167 void lcdbusytest();
168 void writelcdcom(uchar com);
169 void writelcddat(uchar dat);
170 void mdelay(uchar j); //upsd 40M延時
171 void initlcd(); //初始化
172 void clrlcd(); //清屏
173 void printchar(uchar xpos,uchar ypos,uchar str); //寫一個字符
174 void printstr(uchar xpos,uchar ypos,uchar *str); //寫字符串
175 /*-------------------------------------------------------------
176 * 鍵盤掃描
177 *-------------------------------------------------------------*/
178 uchar getkey (void);
C51 COMPILER V7.50 AAA 09/12/2005 06:33:21 PAGE 4
179
180 /*-------------------------------------------------------------
181 * ADC 程序聲明
182 -------------------------------------------------------------*/
183 void ADC_EnableAll(void) ;
184 void ADC_Init (unsigned char channel);
185 unsigned int ADC_Read( unsigned char channel );
186
187 /*-------------------------------------------------------------
188 * 得到電壓電壓值,并在液晶上顯示
189 -------------------------------------------------------------*/
190 void getVA (uchar channel);
191
192 /*-------------------------------------------------------------
193 * 得到功率和頻率
194 -------------------------------------------------------------*/
195 void getPf (void);
196
197 /*******************************************************************
198 ************************PWM部分聲明*********************************
199 *******************************************************************/
200
201 /*-------------------------------------------------------------
202 //定時器0中斷服務程序,PWM
203 //定時器0用于產生采樣周期的定時中斷,采樣周期Ts =1/2載波周期 = 278 時鐘周期
204 -------------------------------------------------------------*/
205 static void timer0_isr (void); //interrupt TF0_VECTOR using 1
206
207 /*-------------------------------------------------------------
208 * int sin_angle(long angle )
209 *功能描述:角度換算函數,使角度值控制在180以內
210 *
211 -------------------------------------------------------------*/
212 int sin_angle(long angle );
213
214 /*-------------------------------------------------------------
215 * void first(void )
216 *第一個采樣點計算函數,在K=0時計算
217 -------------------------------------------------------------*/
218 void first(void );
219
220 /*-------------------------------------------------------------
221 *定時器0初始化
222 -------------------------------------------------------------*/
223 void timer0_init (void);
224
225
226 /*--------------------------------------------------------------------
227 *PCA中斷服務程序
228 ---------------------------------------------------------------------*/
229
230 static void PCA_isr (void); //interrupt PCA_VECTOR using 1
231
232 /*-------------------------------------------------------------------
233 * PCA0初始化
234 --------------------------------------------------------------------*/
235 void PCA_init() ;
236 void pwmwork();
237 /***********************PWM聲明結束***********************************/
238
239 /*********************************************************************
240 ***************************函數聲明結束*******************************
C51 COMPILER V7.50 AAA 09/12/2005 06:33:21 PAGE 5
241 **********************************************************************/
242
243
244 /****************************************************************
245 *延時子程序,1ms
246 ****************************************************************/
247
248 void delay1ms(uint x)
249 {
250 1 uint i;
251 1 while(x--) //((11+7*i)*x+5 )T
252 1 { i= 450;
253 2 while((i--)>0); //i=141,x=1,t=1003T
254 2 }
255 1 }
256 /******************************************************************
257 * uchar keyscan()
258 *功能:鍵盤掃描程序
259 *說明: 4*4鍵盤,無上拉電阻。P0~P3為行輸出,P4~P7為列輸入
260 *返回值:0x(lie)(hang)
261 ******************************************************************/
262
263
264 uchar getkey (void)
265 {
266 1
267 1 static uchar kn;
268 1 uchar lie=0,hang,x=0;
269 1 //E = 0;
270 1 //RS = 0;
271 1 scan = 0xf0;
272 1 if((scan & 0xf0) !=0xf0)
273 1 { delay1ms(10);
274 2 if((scan & 0xf0) !=0xf0)
275 2 { hang = 0xfe;
276 3 for(i=0;i<4;i++ )
277 3 { scan = hang;
278 4 if((scan & 0xf0) != 0xf0)
279 4 {
280 5 lie = ~(scan | 0x0f );
281 5 switch (lie)
282 5 { case 0x10:kn = *(key_tab + i);break;
283 6 case 0x20:kn = *(key_tab+i+4) ;break;
284 6 case 0x40:kn = *(key_tab+i+8) ;break;
285 6 case 0x80:kn = *(key_tab+i+12) ;break;
286 6 default:break;
287 6 }
288 5 return( kn);
289 5 }
290 4 else hang = (hang<<1)|0x01;
291 4 }
292 3 }
293 2 }
294 1 return(kn);
295 1 }
296
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -