📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 05/28/2007 15:49:30 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE main.c LARGE BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "mylib.h"
2 /*
3 编写:bobo
4 调试AD7705过程中有几个问题需要注意:
5 1:AD7705内部增益应尽量小,以免零电压时读数不为零。
6 2:AD7705的设置寄存器应设置成数据缓冲模式(特别是在双通道都使用时,单通道可不用)。
7 (1)当设置成非缓冲模式时,单通道使用可正常工作,双通道使用时不能正常工作(除非每次
8 读写数据时重新复位AD7705)。
9 (2)当设置成缓冲模式时,单通道与双通道均可正常工作。
10 3:AD7705的数据刷新不要太快,太快有时会使AD7705不能正常工作。
11 4:AD7705的复位口最好使用单片机口线控制,这样可在AD7705工作不正常时重新复位AD7705。
12 5:AD7705单通道使用时的编程步骤:
13 (1)初使化AD7705当前使用的通道。
14 (2)读数据。
15 6:AD7705双通道使用时的编程步骤:
16 (1)初使化AD7705第1通道。
17 (2)读数据。
18 (3)初使化AD7705第2通道。
19 (4)读数据。
20 */
21 /*
22 编写:bobo
23 1:为了允许Keil51对STC单片机内部扩展RAM的读写,须将RAM设置成外部XDATA的RAM。
24 2:主程序中加入了看门狗,以防程序死机或受其它方面影响而造成的单片机工作不正常。
25 */
26 uchar i,h,bufdata[2],count,count1;
27 uint j,ReaddataChx;
28 float ak1,ak2,ak3,ak4,ak5;
29 float y,x,z,v;
30 uchar xdata inbuf1[5];
31 uchar xdata inbuf2[5];
32 uint k;
33 void main(void)
34 {
35 1
36 1 AD7705_reset();
37 1 init_serial();
38 1 lcd_init();
39 1 lcd_clr();
40 1 draw_bmp1(0,5,Power);
41 1 lcd_clr2();
42 1 delay();
43 1 WDT_CONTR=0x3f;
44 1 while(1)
45 1 {
46 2 // INI7705();
47 2 // AD7705_reset();
48 2 CH1_init();
49 2 k=filter(0);
50 2 lcd_clr();
51 2 display_num(0);
52 2 Led=0;
53 2 for(i=0;i<100;i++)
54 2 for(j=0;j<500;j++);
55 2 Led=1;
C51 COMPILER V7.50 MAIN 05/28/2007 15:49:30 PAGE 2
56 2 CH2_init();
57 2 k=filter(1);
58 2 lcd_clr();
59 2 display_num(1);
60 2 Led=0;
61 2 for(i=0;i<100;i++)
62 2 for(j=0;j<500;j++);
63 2 Led=1;
64 2 WDT_CONTR=0x3f;
65 2 }
66 1 }
67
68 uint filter(bit mode)
69 {
70 1 uint sum = 0;
71 1 for ( count=0;count<25;count++)
72 1 {
73 2 ReaddataChx=ReadDataCh1_Ch2(mode);
74 2 if(ReaddataChx<10)
75 2 ReaddataChx=0;
76 2 sum =sum+ReaddataChx;
77 2 delay();
78 2 }
79 1 x=(float)sum/25;
80 1 y=x*0.038148;
81 1 v=13.093289;
82 1 z=v*y;
83 1 return (uint)(z);
84 1 }
85
86 #ifdef countresult
#define countresult
void CountResult(bit mode)
{
ReaddataChx=ReadDataCh1_Ch2(mode);
if(ReaddataChx<10)
ReaddataChx=0;
// sum=sum+ReaddataChx;
}
void CountChange(void)
{
if(count==0)
x=sum1;
else if(count==1)
x=sum2;
else if(count==2)
x=sum3;
else if(count==3)
x=sum4;
else if(count==4)
x=sum5;
y=x*0.038148;
v=13.093289;
z=v*y;
if(count==0)
ak1=z;
else if(count==1)
ak2=z;
else if(count==2)
ak3=z;
else if(count==3)
C51 COMPILER V7.50 MAIN 05/28/2007 15:49:30 PAGE 3
ak4=z;
else if(count==4)
ak5=z;
}
#endif
123
124
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 392 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 58 2
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -