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

📄 text1.lst

📁 基于C8051F020单片机的计算器实现。有键盘
💻 LST
📖 第 1 页 / 共 2 页
字号:
 152   1              Delay ( 20 );
 153   1              return ddata;
 154   1      }
 155          
 156          void BC7281Init(){
 157   1              Write_7281 ( 0x12 );                            // 写BC7281B工作模式寄存器
 158   1              Write_7281 ( 0x8e );                            // 扫描使能,扩展开关,164模式,扩展闪烁模式,输出反向,键盘工作模式为' 1 '
 159   1              Write_7281 ( 0x11 );                            // 写闪烁速度控制寄存器
 160   1              Write_7281 ( 0x80 );                            // 闪烁频率 2 HZ
 161   1              Write_7281 ( 0x10 );                            // 初始化时,不闪烁显示
 162   1              Write_7281 ( 0xFF );                            // 1不闪烁
 163   1              Write_7281 ( 0x19 );
 164   1              Write_7281 ( 0xFF );
 165   1      }
 166           min(unsigned char a,b,c,d){
 167   1                     unsigned char m;
 168   1                         m=a;
 169   1                         if(a>=b) m=b;
 170   1                         if(m>c) m=c;
 171   1                         if(m>d) m=d;
 172   1                         return( m);
 173   1                     }
 174          zs(unsigned char j)
 175                          {unsigned char i;
 176   1                       unsigned int m;
 177   1                              m=1;
 178   1                              for(i=0;i<j;i++)
 179   1                              m*=10;
C51 COMPILER V7.50   TEXT1                                                                 06/17/2007 20:27:35 PAGE 4   

 180   1                              return m;}
 181          ///////////////////////////////////////////////////
 182          //主函数
 183          void main(){
 184   1          unsigned char a,b,c,d, i,j,k,m,n,count1,count0,count2,count3,count4,read,k1[8],k2,m1;
 185   1              unsigned int x,y,z;
 186   1              
 187   1          n=0;a=0x10;b=0x10;c=0x10;d=0x10;count1=0;count2=0;count3=0;count4=0;count0=0;
 188   1          
 189   1              WDTCN = 0XDE;   //禁止看门狗
 190   1              WDTCN = 0XAD;
 191   1      
 192   1              PortInitialization ();                          // 初始化端口
 193   1              ExternalClock ();                                       // 起振外部时钟,使它成为系统时钟
 194   1              Timer3Init();
 195   1              ExternIntInit();
 196   1              BC7281Init();
 197   1              EA = 1;         //开总中断
 198   1              TMR3CN |= 0X04; //启动定时器
 199   1              Write_7281(0x15);Write_7281(0x00);
 200   1              Write_7281(0x15);Write_7281(0x10);
 201   1              Write_7281(0x15);Write_7281(0x20);
 202   1              Write_7281(0x15);Write_7281(0x30);
 203   1              Write_7281(0x15);Write_7281(0x40);
 204   1              Write_7281(0x15);Write_7281(0x50);
 205   1              Write_7281(0x15);Write_7281(0x60);        //hex译码,显示0
 206   1              Write_7281(0x15);Write_7281(0x70);              //hex译码,显示0*/
 207   1              Delay(6);       
 208   1              while(1){
 209   2                      if(key_flag == 1){
 210   3                              key_flag = 0;
 211   3                              Write_7281(0x13 | 0x80);
 212   3                              Delay(6);Delay(6);Delay(6);Delay(6);Delay(6);Delay(6);Delay(6);
 213   3                      Delay(6);Delay(6);
 214   3                  
 215   3                              read=Read_7281 ();                                  
 216   3              Delay(6);Delay(6);Delay(6);Delay(6);Delay(6);Delay(6);
 217   3              n++; 
 218   3                      m=min(a,b,c,d);
 219   3              switch(read)
 220   3                       {case 0x0f:{                               //F时所有有值复位
 221   5                                   for(k=0;k<8;k++) {key_value[k]=0x00;
 222   6                                                                 key_value1[k]=0x00;
 223   6                                                                 k1[k]=0x00;}
 224   5                              n=0; read=0;
 225   5                              a=0x10;b=0x10;c=0x10;d=0x10;
 226   5                              k2=0;m1=0;
 227   5                                                  count1=0;count2=0;count3=0;count4=0;count0=0;
 228   5                                                      x=0;y=0;z=0;
 229   5                              Write_7281(0x15);Write_7281(0x00);
 230   5                                                      Write_7281(0x15);Write_7281(0x10);
 231   5                                                      Write_7281(0x15);Write_7281(0x20);
 232   5                                                      Write_7281(0x15);Write_7281(0x30);
 233   5                                                      Write_7281(0x15);Write_7281(0x40);
 234   5                                                      Write_7281(0x15);Write_7281(0x50);
 235   5                                                      Write_7281(0x15);Write_7281(0x60);      
 236   5                                                      Write_7281(0x15);Write_7281(0x70);      
 237   5                                                      Write_7281 ( 0x10 );                    
 238   5                              Write_7281 ( 0xFF );                    
 239   5                          }break;
 240   4                case 0x0a:{
 241   5                                   if(count1!=1){a=n;count1++;k2=0x0a;}
C51 COMPILER V7.50   TEXT1                                                                 06/17/2007 20:27:35 PAGE 5   

 242   5                                               else n--;
 243   5                                               }break;
 244   4                case 0x0b:{
 245   5                                   if(count2!=1){b=n;count1++;k2=0x0b;}
 246   5                                               else n--;
 247   5                                               }break;
 248   4                case 0x0c:{
 249   5                                   if(count3!=1){c=n;count1++;k2=0x0c;}
 250   5                                               else n--;
 251   5                                               }break;
 252   4                        case 0x0d:{
 253   5                                   if(count4!=1){d=n;count1++;k2=0x0d;}
 254   5                                               else n--;
 255   5                                               }break;
 256   4      
 257   4                case 0x0e:{
 258   5                                   if(count0!=1){count0++;m1=n;
 259   6                                                           
 260   6                                        for(i=0;i<m-1;i++)x+=key_value[8-m1+m-i]*zs(i);
 261   6                                        for(i=0;i<=(m1-m-2);i++)y+=key_value[7-i]*zs(i);
 262   6                                                                        if  (k2==0x0a) z=x+y;
 263   6                                                                        if (k2==0x0b) z=x-y;
 264   6                                                                        if (k2==0x0c) z=x*y;
 265   6                                                                        if (k2==0x0d) z=x/y;
 266   6                                                                        for(i=0;i<8;i++)
 267   6                                                                        k1[7-i]=z/zs(i)%10;
 268   6                                      for(i=0;i<8;i++)
 269   6                                       {Write_7281(add1[i]);Write_7281(add[k1[i]]);  }
 270   6                                      
 271   6                                       
 272   6                                       }else n--;
 273   5                                       }break;                                                                                                                  
 274   4                              
 275   4                default :{for(i=0;i<7;i++)
 276   5                                                 key_value[i]=key_value[i+1];
 277   5                                             key_value[7] =read;
 278   5                                                         
 279   5                                                         if(m==0x10)for(j=0;j<8;j++)
 280   5                                              {Write_7281(add1[j]);Write_7281(add[key_value[j]]);}
 281   5                                 if(m!=0x10) {
 282   6                                                         
 283   6                               
 284   6                                    for(i=0;i<7;i++)
 285   6                                                    key_value1[i]=key_value1[i+1];
 286   6                                                key_value1[7] =read;
 287   6                                  
 288   6                                                           for(j=0;j<8;j++)
 289   6                                               {Write_7281(add1[j]);Write_7281(add[key_value1[j]]);}}
 290   5      
 291   5                          };
 292   4                       }
 293   3      
 294   3      Delay(6);       Delay(6);Delay(6);Delay(6);Delay(6);    }}}


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1643    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     92    ----
   IDATA SIZE       =   ----    ----
C51 COMPILER V7.50   TEXT1                                                                 06/17/2007 20:27:35 PAGE 6   

   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 + -