📄 计算器.lst
字号:
C51 COMPILER V6.23a _芲闫_ 03/30/2007 21:30:12 PAGE 1
C51 COMPILER V6.23a, COMPILATION OF MODULE _芲闫_
OBJECT MODULE PLACED IN 计算器.OBJ
COMPILER INVOKED BY: D:\mcs51\Keil\C51\BIN\C51.EXE 计算器.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include<reg52.h>
2 #define uchar unsigned char
3 #define uint unsigned int
4 char a[16]={0};
5 char b[16]={0};
6 uchar dm[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x79,0x40};
7 uchar wx[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
8 uchar m,n,l,smz1,smz,zhi,flag,cp;
9 char i,j,k;
10 bit flag1,flag2,flag3;
11 sbit key1=P1^3;
12 sbit key2=P1^2;
13 void delay()
14 {
15 1 for(i=0;i<100;i++);
16 1 }
17 void jia()
18 {
19 1 for(i=0;i<16;i++)
20 1 {
21 2 a[i]=a[i]+b[i]+cp;
22 2 if(a[i]>=10)
23 2 {
24 3 a[i]=a[i]-10;
25 3 cp=1;
26 3 }
27 2 else
28 2 cp=0;
29 2 }
30 1 }
31 void jian()
32 {
33 1 flag3=0;
34 1 for(i=15;i>=0;i--)
35 1 {
36 2 if(a[i]==b[i])
37 2 continue;
38 2 else if(a[i]>b[i])
39 2 {
40 3 flag3=1;
41 3 break;
42 3 }
43 2 else
44 2 break;
45 2
46 2 }
47 1 if(flag3==1)
48 1 {
49 2 for(i=0;i<16;i++)
50 2 {
51 3 a[i]=a[i]-cp-b[i];
52 3 if(a[i]<0)
53 3 {
54 4 a[i]=a[i]+10;
55 4 cp=1;
C51 COMPILER V6.23a _芲闫_ 03/30/2007 21:30:12 PAGE 2
56 4 }
57 3 else
58 3 cp=0;
59 3 }
60 2 for(i=15;i>=0;i--)
61 2 if(a[i]!=0)
62 2 {
63 3 a[i+1]=11;
64 3 break;
65 3 }
66 2 }
67 1 else
68 1 {
69 2 for(i=0;i<16;i++)
70 2 {
71 3 a[i]=b[i]-cp-a[i];
72 3 if(a[i]<0)
73 3 {
74 4 a[i]=10+a[i];
75 4 cp=1;
76 4 }
77 3 else
78 3 cp=0;
79 3 }
80 2 }
81 1 }
82 void chen()
83 {
84 1
85 1 }
86 void chu()
87 {
88 1
89 1 }
90 uchar key()
91 {
92 1 P2=0x0f;
93 1 smz=P2;
94 1 P2=0xf0;
95 1 smz1=P2;
96 1 smz=smz+smz1;
97 1 return smz;
98 1 }
99
100 void js()
101 {
102 1 cp=0;
103 1 switch(flag)
104 1 {
105 2 case 0xfe: jia();break;
106 2 case 0xfd: jian();break;
107 2 case 0xfc: chen();break;
108 2 case 0xfb: chu();break;
109 2 }
110 1 }
111
112 void ys()
113 {
114 1 flag1=1;
115 1 if(zhi==0xee)
116 1 {
117 2 js();
C51 COMPILER V6.23a _芲闫_ 03/30/2007 21:30:12 PAGE 3
118 2 flag2=1;
119 2 }
120 1 else
121 1 {
122 2 js();
123 2 flag=zhi;
124 2 flag2=0;
125 2 }
126 1 for(j=0;j<16;j++)
127 1 {
128 2 b[j]=a[j];
129 2 a[j]=0;
130 2 }
131 1 }
132
133 void yw()
134 {
135 1 flag1=0;
136 1 m=0;
137 1 if(flag2==1)
138 1 {
139 2 for(i=0;i<16;i++)
140 2 b[i]=0;
141 2 flag2=0;
142 2 }
143 1 if(a[7]==0)
144 1 {
145 2 for(i=6;i>0;i--)
146 2 a[i+1]=a[i];
147 2 a[1]=a[0];
148 2 a[0]=zhi;
149 2 }
150 1 }
151
152 void pd()
153 {
154 1 switch(key())
155 1 {
156 2 case 0xff:zhi=10;break;
157 2 case 0xed:zhi=1;while(key()==0xed);break;
158 2 case 0xdd:zhi=2;while(key()==0xdd);break;
159 2 case 0xbd:zhi=3;while(key()==0xbd);break;
160 2 case 0xeb:zhi=4;while(key()==0xeb);break;
161 2 case 0xdb:zhi=5;while(key()==0xdb);break;
162 2 case 0xbb:zhi=6;while(key()==0xbb);break;
163 2 case 0xe7:zhi=7;while(key()==0xe7);break;
164 2 case 0xd7:zhi=8;while(key()==0xd7);break;
165 2 case 0xb7:zhi=9;while(key()==0xb7);break;
166 2 case 0xde:zhi=0;while(key()==0xde);break;
167 2 case 0xee:zhi=0xff;while(key()==0xee);break;
168 2 case 0x7e:zhi=0xfe;while(key()==0x7e);break;
169 2 case 0x7d:zhi=0xfd;while(key()==0x7d);break;
170 2 case 0x7b:zhi=0xfc;while(key()==0x7b);break;
171 2 case 0x77:zhi=0xfb;while(key()==0x77);break;
172 2 case 0xbe:zhi=0xee;while(key()==0xbe);break;
173 2 }
174 1
175 1 if(zhi==0xff)
176 1 {
177 2 m=0;
178 2 for(j=0;j<16;j++)
179 2 {
C51 COMPILER V6.23a _芲闫_ 03/30/2007 21:30:12 PAGE 4
180 3 a[j]=0;
181 3 b[j]=0;
182 3 }
183 2 }
184 1 else if(zhi==0xfe||zhi==0xfd||zhi==0xfc||zhi==0xfb||zhi==0xee)
185 1 {
186 2 ys();
187 2 }
188 1 else if(zhi==10);
189 1 else
190 1 {
191 2 yw();
192 2 }
193 1 }
194
195 void display()
196 {
197 1 if(flag1==0)
198 1 {
199 2 for(j=15;j>0;j--)
200 2 {
201 3 if(a[j]!=0)
202 3 {
203 4 if(j>=8)
204 4 {
205 5 a[0]=10;
206 5 for(i=1;i<8;i++)
207 5 a[i]=0;
208 5 m=0;
209 5 break;
210 5 }
211 4 m=j;
212 4 break;
213 4 }
214 3 }
215 2 for(j=0;j<m+1;j++)
216 2 {
217 3 n=a[j];
218 3 P0=~dm[n];
219 3 key1=1;
220 3 key1=0;
221 3 P0=wx[j];
222 3 key2=1;
223 3 key2=0;
224 3 delay();
225 3 }
226 2 }
227 1 else
228 1 {
229 2 for(j=15;j>0;j--)
230 2 {
231 3 if(b[j]!=0)
232 3 {
233 4 if(j>=8)
234 4 {
235 5 b[0]=10;
236 5 for(i=1;i<8;i++)
237 5 b[i]=0;
238 5 m=0;
239 5 break;
240 5 }
241 4 m=j;
C51 COMPILER V6.23a _芲闫_ 03/30/2007 21:30:12 PAGE 5
242 4 break;
243 4 }
244 3 }
245 2 for(j=0;j<m+1;j++)
246 2 {
247 3 n=b[j];
248 3 P0=~dm[n];
249 3 key1=1;
250 3 key1=0;
251 3 P0=wx[j];
252 3 key2=1;
253 3 key2=0;
254 3 delay();
255 3 }
256 2 }
257 1 }
258 void main()
259 {
260 1 flag1=0;
261 1 cp=0;
262 1 m=0;
263 1 flag=0xfe;
264 1 while(1)
265 1 {
266 2 pd();
267 2 display();
268 2 }
269 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1045 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 63 ----
IDATA SIZE = ---- ----
BIT SIZE = 3 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -