📄 main.lst
字号:
132 5 }
133 4 }
134 3 P2=temp;
135 3 return num;
136 3 }
137 2 }
138 1
139 1
140 1 }
141 //***************************************************
142 //输入子程序,将输入的小于9999的数存储到block数组中
143 void input(uchar n)
144 {
145 1 uchar wei[4]=0,i=0; //3--个位,2--十位,1--百位,0--千位.....
146 1 uint quan=1; //设定权值初值
147 1 num=keyscan();
148 1 while(num!=11) //判断是否按下确认键
149 1 {
150 2 wei[i]=num; //将个十百千放入数列中
151 2 block[n]=wei[0]*quan+wei[1]*quan/16+wei[2]*quan/256+wei[3]*quan/4096;
152 2 display(block[n]); //同步显示
153 2 num=keyscan(); //输入下一位
154 2 quan=quan*16; //权值增倍
155 2 i++;
156 2 }
157 1 P0=0xFF; //关闭数码管
158 1
159 1 }
160 //**************************************************
161 //显示子程序
162 void display(uint shu)
163 {
164 1 uchar qian,shi,bai,ge;
165 1 qian=shu/4096; //分离千位
166 1 bai=shu%4096/256; //分离百位
167 1 shi=shu%256/16; //分离十位
168 1 ge=shu%16; //分离个位
169 1 while((P2&0xf0)==0xf0) //无键按下,保持显示状态(动态显示)
170 1 {
171 2 if(qian!=0) P0=qian; //判断千位是否为零,不为零并显示
172 2 delay(2);
173 2 if((bai!=0)||(qian!=0)) P0=bai+0x10; //判断百,千位是否为零,不为零并显示
174 2 delay(2);
175 2 if((bai!=0)||(qian!=0)||(shi!=0)) P0=shi+0x20;//判断十,百,千位是否为零,不为零并显示
176 2 delay(2);
177 2 P0=ge+0x30;
178 2 delay(2);
179 2
C51 COMPILER V7.06 MAIN 04/17/2008 20:57:57 PAGE 4
180 2 }
181 1
182 1 }
183 //*******************************************
184 //显示子程序
185 void display1(uint shu) //与display()大体一致,稍有不同
186 { uint tt=0;
187 1 uchar qian,shi,bai,ge;
188 1 qian=shu/4096;
189 1 bai=shu%4096/256;
190 1 shi=shu%256/16;
191 1 ge=shu%16;
192 1 while(tt<500) //tt=500,大约保持2秒种
193 1 {
194 2 if(qian!=0) P0=qian;
195 2 delay(2);
196 2 if((bai!=0)||(qian!=0)) P0=bai+0x10;
197 2 delay(2);
198 2 if((bai!=0)||(qian!=0)||(shi!=0)) P0=shi+0x20;
199 2 delay(2);
200 2 P0=ge+0x30;
201 2 delay(2);
202 2 tt++;
203 2
204 2 }
205 1 P0=0xff; //关闭数码管500毫秒,以示区分
206 1 delay(1000);
207 1
208 1 }
209 //**********************************************
210 //排序子程序
211 void paixu()
212 {
213 1 uint mid,i,j;
214 1 for (i=0;i<8;i++)
215 1 {
216 2 for (j=0;j<7;j++)
217 2 {
218 3 if(block[j]>block[j+1])
219 3 {
220 4 mid=block[j];
221 4 block[j]=block[j+1];
222 4 block[j+1]=mid;
223 4 }
224 3 }
225 2 }
226 1 }
227 //*******************************************
228 void delay(uint p)//延迟时间为p*0.5毫秒
229 {
230 1 uint rr;
231 1 tt=0;
232 1 TMOD=0XF1;//设置定时器工作模式为1
233 1 TH0=(65536-500)/256;//设置定时器初始值使定时器中断一次时间为0.5毫秒
234 1 TL0=(65536-500)%256;
235 1 EA=1;//开总中断
236 1 ET0=1;//开定时器0中断
237 1 TR0=1;//开启定时器
238 1 rr=p;
239 1 while(1)
240 1 { if(tt==rr)
241 2 {
C51 COMPILER V7.06 MAIN 04/17/2008 20:57:57 PAGE 5
242 3 EA=0;
243 3 TR0=0;
244 3 ET0=0;
245 3 tt=0;
246 3 break;
247 3 }
248 2 }
249 1 }
250 void time0() interrupt 1
251 {
252 1 TH0=(65536-500)/256;//设置定时器初始值使定时器中断一次时间为0.5毫秒
253 1 TL0=(65536-500)%256;
254 1 tt++;
255 1 }
256
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 880 ----
CONSTANT SIZE = 4 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 20 21
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 + -