📄 main.lst
字号:
126 3 }
127 2 }
128 1 else
129 1 {
130 2 g_KeyFlg = 0;
131 2 }
132 1 }
133
134
135 //按键处理子函数
136 void Process(void)
137 {
138 1 switch(g_KeyVal)
139 1 {
140 2 case 1: g_FreqVal++; //频率加
141 2 if(g_FreqVal == 0xffff)
142 2 {
143 3 g_FreqVal = 0;
144 3 }
145 2 break;
146 2 case 2: g_FreqVal--; //频率减
147 2 if(g_FreqVal == 0xffff)
148 2 {
149 3 g_FreqVal = 1000;
150 3 }
151 2 break;
152 2 case 3: g_PhsVal++; //相位加
153 2 if(g_PhsVal == 360)
154 2 {
155 3 g_PhsVal = 0;
156 3 }
157 2 break;
158 2 case 4: g_PhsVal--; //相位减
159 2 if(g_PhsVal == 0xffff) //减到0后,继续减
160 2 {
161 3 g_PhsVal = 359;
162 3 }
163 2 break;
164 2 default: break;
165 2 }
166 1
167 1 //以下是向定时计数器T0,T1计数缓存中存数
168 1 g_TH0 = (uint)(65536 - 500000 / g_FreqVal + g_cor) / 256;
169 1 g_TL0 = (uint)(65536 - 500000 / g_FreqVal + g_cor) % 256;
170 1
171 1 g_TH1 = (uint)(65536 - g_PhsVal % 180 * 2777.778 / g_FreqVal) / 256;
172 1 g_TL1 = (uint)(65536 - g_PhsVal % 180 * 2777.778 / g_FreqVal) % 256;
173 1
174 1 //8为数码管高四位显示当前方波的频率值,低三位显示当前波形的相位值
175 1 dis_buf[0] = g_FreqVal / 1000;
176 1 dis_buf[1] = g_FreqVal / 100 % 10;
177 1 dis_buf[2] = g_FreqVal / 10 % 10;
178 1 dis_buf[3] = g_FreqVal % 10;
179 1 dis_buf[4] = 0x10; //空显,分隔符
C51 COMPILER V7.50 MAIN 08/08/2008 17:59:50 PAGE 4
180 1 dis_buf[5] = g_PhsVal / 100;
181 1 dis_buf[6] = g_PhsVal % 100 /10;
182 1 dis_buf[7] = g_PhsVal % 10;
183 1 }
184
185
186 //主函数
187 void main(void)
188 {
189 1 Initiate();
190 1 while(1)
191 1 {
192 2 if(g_KeyFlg == 1)
193 2 {
194 3 Process();
195 3 }
196 2 ScanKey();
197 2 Display();
198 2 }
199 1 }
200
201
202 //定时计数器0中断函数
203 void Timer0_int() interrupt 1
204 {
205 1 TH0 = g_TH0;
206 1 TL0 = g_TL0;
207 1 if(OUT0 == 1 )
208 1 {
209 2 TH1 = g_TH1;
210 2 TL1 = g_TL1;
211 2 OUT1 = 1;
212 2 TR1 = 1;
213 2 }
214 1 else
215 1 {
216 2 TH1 = g_TH1;
217 2 TL1 = g_TL1;
218 2 TR1 = 1;
219 2 }
220 1
221 1 OUT0 = !OUT0;
222 1 }
223
224
225 //定时计数器1中断函数
226 void Timer1_int() interrupt 3
227 {
228 1 if(OUT1 == 1)
229 1 {
230 2 OUT1 = 0;
231 2 TR1 = 0;
232 2 }
233 1 else
234 1 {
235 2 OUT1 = 1;
236 2 TR1 = 0;
237 2 }
238 1 }
239
240
241
C51 COMPILER V7.50 MAIN 08/08/2008 17:59:50 PAGE 5
242
243
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 586 ----
CONSTANT SIZE = 17 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 18 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -