📄 demo.lst
字号:
196 2 dispbuff[0]=(ResetBuff[0]%16)|0x80;
197 2 dispbuff[1]=ResetBuff[1]%16;
198 2 display();
199 2 delay(10000);
200 2 RKC=ReadKeyCode();
201 2 }
202 1 else if(RKC==0x0d)
203 1 {
204 2 if(ResetBuff[1]==0x09)
205 2 if(ResetBuff[0]==0x04)
206 2 ;
207 2 else
208 2 { ResetBuff[1]=0x00; ResetBuff[0]++; }
209 2 else ResetBuff[1]++;
210 2 dispbuff[0]=(ResetBuff[0]%16)|0x80;
211 2 dispbuff[1]=ResetBuff[1]%16;
212 2 display();
213 2 delay(10000);
214 2 RKC=ReadKeyCode();
215 2 }
216 1 else return RKC;
217 1 }
218
219
220 /******************************************************************
221 函数名称:void FlagSign()
222 函数功能:通过按键输入一个初始电压,取值范围:0~9.9V
223 入口参数:无
224 出口参数:无
225 全局变量:flag
226 KeyCode
227 ResetBuff[0],ResetBuff[1]
228 dispbuff[0],dispbuff[1]
229 MidKeyCode
230 调用模块:main
231 ******************************************************************/
232
233 void FlagSign()
234 {
235 1
236 1 if(flag==0x01)
237 1 if(KeyCode==0x0f) //判断是否为16号置初值键
238 1 ;
239 1 else flag=0x00;
240 1 else if(flag==0x02)
C51 COMPILER V7.01 DEMO 06/24/2005 22:51:56 PAGE 5
241 1 if(KeyCode>=0x00 && KeyCode<=0x04)
242 1 { MidKeyCode=ResetBuff[0]; ResetBuff[0]=KeyCode; }
243 1 else flag=0x00;
244 1 else if(flag==0x03)
245 1 if(KeyCode>=0x00 && KeyCode<=0x09)
246 1 {
247 2 ResetBuff[1]=KeyCode;
248 2 dispbuff[0]=ResetBuff[0]%16;
249 2 dispbuff[1]=ResetBuff[1]%16;
250 2 flag=0x00;
251 2 }
252 1 else { ResetBuff[0]=MidKeyCode; flag=0x00; }
253 1 }
254
255
256 /******************************************************************
257 函数名称:void sent(unsigned char sent_buf)
258 函数功能:发读键盘命令
259 入口参数:sent_buf
260 出口参数:无
261 全局变量:CS
262 CLK
263 DIO
264 调用模块:display
265 ReadKeyCode
266 ReadKB
267 ******************************************************************/
268
269 void sent(unsigned char sent_buf)
270 {
271 1 char i;
272 1 CLK=0; //置SPI时钟线为低
273 1 CS=0; //置SPI片选线为低
274 1 delay (50); //延时50us
275 1
276 1 for(i=0;i<8;i++) //发送8位数据
277 1 {
278 2 sent_buf=sent_buf<<1; //从数据最高位开始,将要发发送的数据位移入进位位CY
279 2 DIO=CY; //数据位送数据线
280 2 CLK=1; //置SPI时钟线为高
281 2 delay (10); //延时10us
282 2 CLK=0; //置SPI时钟线为低,发送完1位数据
283 2 delay (10); //延时10us
284 2 }
285 1 delay (50);
286 1 DIO=0;
287 1 }
288 /******************************************************************
289 函数名称:void delay(char time)
290 函数功能:延迟
291 入口参数:time 延迟时间
292 出口参数:无
293 全局变量:无
294 调用模块:ReadKeyCode
295 ReadKB
296 sent
297 ******************************************************************/
298
299 void delay(unsigned int time)
300 {
301 1 unsigned int i;
302 1 for(i=0;i<time;i++);
C51 COMPILER V7.01 DEMO 06/24/2005 22:51:56 PAGE 6
303 1 }
304
305
306 /******************************************************************
307 函数名称:void display()
308 函数功能:显示输出缓冲池dispbuff[0]~dispbuff[7]的内容
309 入口参数:无
310 出口参数:无
311 全局变量:CS
312 调用模块:Timer0
313 ReadKeyCode
314 ******************************************************************/
315
316 void display()
317 {
318 1 char i;
319 1 for(i=0;i<2;i++)
320 1 {
321 2 CS=1;
322 2 sent(0xc8+i);
323 2 sent(dispbuff[i]);
324 2 CS=1;
325 2 sent(0xc8+6+i);
326 2 sent(dispbuff[6+i]);
327 2 CS=1;
328 2 }
329 1 }
330
331
332 /******************************************************************
333 函数名称:main()
334 函数功能:主函数
335 入口参数:无
336 出口参数:无
337 全局变量:CS
338 TICK
339 dispbuff 输出缓冲池
340 ResetBuff
341 ADresult AD转换结果
342 调用模块:无
343 ******************************************************************/
344
345 main()
346 {
347 1 int mid1;
348 1 char i;
349 1 EX1=1;
350 1 EA=1;
351 1 CS=1;
352 1 IT1=1;
353 1 TMOD=0x01; //定时器初始化
354 1 TH0=0x3c;
355 1 TL0=0xb0;
356 1 ET0=1;
357 1 TR0=1;
358 1 TICK=0;
359 1 dispbuff[0]=(ResetBuff[0]%16)|0x80;
360 1 dispbuff[1]=ResetBuff[1]%16;
361 1 for (i=2;i<6;i++)
362 1 {
363 2 dispbuff[i]=1+i;
364 2 }
C51 COMPILER V7.01 DEMO 06/24/2005 22:51:56 PAGE 7
365 1 ADresult=0x00;
366 1 dispbuff[6]=(ADresult/16)|0x80;
367 1 dispbuff[7]=(ADresult%16)&0x0f;
368 1 while(1)
369 1 {
370 2 FlagSign();
371 2
372 2 *DAResult=DASource(); //数据送DA转换器
373 2 ADresult=adconvert(2); //读取AD转换结果
374 2
375 2 dispbuff[0]=(ResetBuff[0]%16)|0x80;
376 2 dispbuff[1]=ResetBuff[1]%16;
377 2
378 2 mid1=ADresult*0.196;
379 2 dispbuff[6]=mid1/10+128;
380 2 dispbuff[7]=mid1%10;
381 2 }
382 1
383 1 }
384
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 974 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 17 18
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -