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