📄 main.lst
字号:
C51 COMPILER V8.01 MAIN 11/30/2005 15:57:30 PAGE 1
C51 COMPILER V8.01, 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 #include <reg51.h>
2
3 #define uchar unsigned char
4 #define uint unsigned int
5 #define ulong unsigned long
6
7 sfr IPH=0xB7;
8 sfr AUXR=0x8E;
9 sfr AUXR1=0xA2;
10 sfr XICON=0xC0;
11 sfr WDT_CONTR=0xE1;
12 sfr ISP_CONTR=0xE7;
13
14 uchar Dispbuff[4];
15 bit Firstint;
16 bit Firstfilt;
17 ulong Filter_result;
18 ulong Last_samp_data;
19 ulong Measure;
20 ulong Sampbuff[3];
21 uchar Time_samp;
22 uchar P_buff;
23
24 extern uchar Samp_data_h;
25 extern uchar Samp_data_l;
26 extern uchar Samp_data_c;
27 extern uchar Time_int_t0;
28 extern bit Samp_ok;
29
30 #pragma noaregs
31
32 void ini_sfr()
33 {
34 1 PSW=0x00;
35 1 AUXR=0x03;
36 1 AUXR1=0x00;
37 1 ISP_CONTR=0x00;
38 1 WDT_CONTR=0x38;
39 1 XICON=0x00;
40 1 IP=0x02; //int0=2,t0=1,t1=0
41 1 IPH=0x01;
42 1 TCON=0x01; //int0:下降沿中断
43 1 TMOD=0x11; //T0:16位计数器,T1:16位定时器
44 1 TH1=0xE3; //22.1184/4ms
45 1 TL1=0x33;
46 1 TH0=0x00;
47 1 TL0=0x00;
48 1 SCON=0x00;
49 1 Firstint=0;
50 1 Firstfilt=1;
51 1 Samp_data_h=0;
52 1 Samp_data_l=0;
53 1 Samp_data_c=0;
54 1 Time_int_t0=0;
55 1 Samp_ok=0;
C51 COMPILER V8.01 MAIN 11/30/2005 15:57:30 PAGE 2
56 1 IE=0x8B;
57 1 TR1=1;
58 1 }
59
60 void disp_logo()
61 {
62 1 uchar i=250;
63 1 Dispbuff[0]=43;
64 1 Dispbuff[1]=22;
65 1 Dispbuff[2]=11;
66 1 Dispbuff[3]=0;
67 1 while(i--)
68 1 PCON|=0x01;
69 1 }
70
71 void samp()
72 {
73 1 uint temp1;
74 1 ulong temp2;
75 1 Time_samp=4;
76 1 P_buff=0;
77 1 while(--Time_samp)
78 1 {
79 2 while(Samp_ok==0);
80 2 Samp_ok=0;
81 2 temp1=Samp_data_h;
82 2 temp1=(temp1<<8)|Samp_data_l;
83 2 temp2=65535*Samp_data_c;
84 2 Sampbuff[P_buff++]=(temp1+temp2);
85 2 }
86 1 }
87
88 void filter()
89 {
90 1 uchar i,j;
91 1 ulong temp;
92 1 for(i=0;i<=1;i++)
93 1 for(j=0;j<=(1-i);j++)
94 1 if(Sampbuff[j]>Sampbuff[j+1])
95 1 {
96 2 temp=Sampbuff[j];Sampbuff[j]=Sampbuff[j+1];Sampbuff[j+1]=temp;
97 2 }
98 1 if(Firstfilt)
99 1 {
100 2 Firstfilt=0;
101 2 Firstint=0;
102 2 Filter_result=Sampbuff[1];
103 2 Last_samp_data=Sampbuff[1];
104 2 }
105 1 else if(-250<(Sampbuff[1]-Last_samp_data)<250)
106 1 {
107 2
108 2 Firstint=0;
109 2 Last_samp_data=Sampbuff[1];
110 2 Filter_result=(Filter_result*9+Sampbuff[1])/10;
111 2 }
112 1 else
113 1 {
114 2 if (Firstint)
115 2 {
116 3 Firstint=0;
117 3 Filter_result=Sampbuff[1];
C51 COMPILER V8.01 MAIN 11/30/2005 15:57:30 PAGE 3
118 3 Last_samp_data=Sampbuff[1];
119 3 }
120 2 else
121 2 Firstint=1;
122 2 }
123 1
124 1 }
125
126
127 void data_manage()
128 {
129 1 ulong temp=184320000;
130 1 Measure=temp/Filter_result;
131 1 }
132
133 void renovate_disp(ulong Measure)
134 {
135 1 uint i=Measure;
136 1 uchar temp[4];
137 1 temp[0]=i/1000;
138 1 temp[1]=(i-temp[0]*1000)/100;
139 1 temp[2]=(i-temp[0]*1000-temp[1]*100)/10;
140 1 temp[3]=i-temp[0]*1000-temp[1]*100-temp[2]*10;
141 1 if (temp[0]==0)
142 1 {
143 2 temp[0]=43;
144 2 }
145 1 Dispbuff[0]=temp[0];
146 1 Dispbuff[1]=temp[1]+10;
147 1 Dispbuff[2]=temp[2];
148 1 Dispbuff[3]=temp[3];
149 1 }
150
151 void main()
152 {
153 1 SP=0x5F;
154 1 ini_sfr();
155 1 disp_logo();
156 1
157 1 while(1)
158 1 {
159 2 samp();
160 2 filter();
161 2 data_manage();
162 2 renovate_disp(Measure);
163 2 }
164 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 667 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 30 20
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -