📄 main.lst
字号:
C51 COMPILER V8.08 MAIN 11/20/2008 22:02:47 PAGE 1
C51 COMPILER V8.08, 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
2 /******************************
3 名字: main.c
4 作者: 春风
5 创建日: 2008.8.15
6 工程: 数控稳压电源
7 *******************************/
8
9 #include"reg52.h"
10 #include"delay.h"
11 #include"Config.h"
12 #include"IOCfg.c"
13 #include"AD7705.h"
14 #include"DACMAX531.h"
15 #include"KEY.h"
16 #include"LCD12864.h"
17 #include"MENU.h"
18
19 //#include"stdlib.h"
20
21 char code dx516[3] _at_ 0x003b;//这是为了仿真设置的(大虾仿真器)
22 idata uchar GOUT[7];//在片内定义间接寻址的数组
23 static idata uchar x[6] = {0,0,0,0,0,0}; //---定义一个数组 按键数值 存放
24
25 static uchar set_lcd_temp;// lcd刷新计数
26 static idata float dac_temp;
27
28 uchar aaa;
29
30 //idata float key_vol = 0.0000;
31
32 /************************************************************************************
33
34 把浮点数拆开存储指针型数据
35
36 ************************************************************************************/
37 void chai(float x)
38 {
39 1 uint i;
40 1 for(i = 0;i < 7;i ++)
41 1 {
42 2 GOUT[i] = 0;
43 2 }
44 1
45 1 i = x / 10;
46 1 if(i == 0)
47 1 {
48 2 GOUT[0] = ' ';
49 2 }
50 1 else
51 1 {
52 2 GOUT[0] = i + '0';
53 2 }
54 1
55 1 GOUT[1] = (int)x % 10 + '0';
C51 COMPILER V8.08 MAIN 11/20/2008 22:02:47 PAGE 2
56 1 x = x * 10;
57 1 GOUT[3] = (int)x % 10 + '0';
58 1 x = x * 10;
59 1 GOUT[4] = (int)x % 10 + '0';
60 1 x = (x * 10);
61 1 GOUT[5] = (unsigned int)x % 10 + '0';
62 1
63 1 GOUT[2] = '.';
64 1 GOUT[6] = '\0';
65 1 }
66
67 /************************************************************************************
68 显示设定电压
69 ************************************************************************************/
70 void disp_set(float set_temp1)
71 {
72 1 lcm_w_word(0x90,0x00,"设定:");
73 1 chai(set_temp1 +0.0003);
74 1 lcm_w_word(0x90,3,GOUT);
75 1 lcm_w_word(0x90,0x06,"V ");
76 1 }
77
78 /************************************************************************************
79
80 扫描按键,并根据键值修改DAC的电压
81 用数字键输入电压值 ,和加减电压1V和0.1V
82
83 ************************************************************************************/
84
85 void key_dac(uchar key_temp)
86 {
87 1 uchar j = 0;
88 1 uchar i;
89 1 static uchar ii = 0;
90 1 //static uchar key_temp;
91 1 set_lcd_temp = 0;
92 1 //key_temp = key_num();
93 1 if(((key_temp <= 0x09) && (key_temp >= 0x00)) || (key_temp == '.'))
94 1 {
95 2 if(ii == 0)
96 2 { w_code(0x93);
97 3 for(ii = 0;ii < 6;ii ++)
98 3 {
99 4 w_data(' ');
100 4 }
101 3 ii = 0;
102 3 }
103 2 if(ii > 5)
104 2 {
105 3 for(i = 0;i < 5;i ++)
106 3 {x[i] = 0;}
107 3 w_code(0x93);
108 3 for(j = 0;j < 6;j++)
109 3 {w_data(' ');}
110 3 ii = 0;
111 3 }
112 2 x[ii] = key_temp;
113 2 ii ++;
114 2 if(ii != 0)
115 2 {
116 3 w_code(0x93);
117 3 for(j = 0;j < ii;j++)
C51 COMPILER V8.08 MAIN 11/20/2008 22:02:47 PAGE 3
118 3 {
119 4 if(x[j] == '.')
120 4 {
121 5 w_data('.');
122 5 }
123 4 else
124 4 {
125 5 w_data(x[j] + 0x30);
126 5 }
127 4 }
128 3 }
129 2 lcm_w_word(0x90,0x06,"V ");
130 2 BELL_ONOFF(1);
131 2 delay(14000);
132 2 BELL_ONOFF(0);
133 2 }
134 1 if(ii != 0)
135 1 {
136 2 if(key_temp == key_enter)
137 2 {
138 3 idata float key_vol = 0.0000;
139 3 idata float chu = 10;
140 3 uchar y = 0;
141 3 j = 0;
142 3 while((x[j] != '.') && (j < 6))
143 3 j ++;
144 3 if(j == 6)
145 3 {
146 4 x[ii] = '.';
147 4 }
148 3 ii = 0;
149 3 while((x[y] != '.') && (y < 6))
150 3 key_vol = key_vol * 10 + x[y ++];
151 3 y ++;
152 3 while(y < 6)
153 3 {
154 4 key_vol = key_vol + x[y ++] / chu;
155 4 chu = chu * 10;
156 4 }
157 3 for(ii = 0;ii < 6;ii ++)
158 3 {
159 4 x[ii] = 0;
160 4 }
161 3 ii = 0;
162 3 j = 0;
163 3 dac_temp = key_vol;
164 3
165 3 RS = 1;
166 3 RW = 0;
167 3 if((dac_temp < 0) || (dac_temp >= 30.10))
168 3 {
169 4 dac_temp = 0;
170 4 lcm_w_word(0x90,0x03," 无效 ");
171 4 BELL_ONOFF(1);
172 4 delay(7000);
173 4 BELL_ONOFF(0);
174 4 delay(10000);
175 4 BELL_ONOFF(1);
176 4 delay(7000);
177 4 BELL_ONOFF(0);
178 4 delay(10000);
179 4 BELL_ONOFF(1);
C51 COMPILER V8.08 MAIN 11/20/2008 22:02:47 PAGE 4
180 4 delay(7000);
181 4 BELL_ONOFF(0);
182 4 delay(60000);
183 4 disp_set(dac_temp);
184 4 dac(conver(dac_temp));
185 4 }
186 3 else
187 3 {
188 4 disp_set(dac_temp);
189 4 dac(conver(dac_temp));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -