⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lst

📁 由键盘输入八个四位整数
💻 LST
📖 第 1 页 / 共 2 页
字号:
 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 + -