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

📄 24c02a.lst

📁 说明: Virtual51是一个动态可视化的MCS-51全功能模拟程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 204   2           SCL=1;              
 205   2           delay();    
 206   2           SCL=0; 
 207   2               delay(); 
 208   2          }
 209   1       SDO=1;     
 210   1       SCL=1;
 211   1       delay(); 
 212   1       AF=SDI;
 213   1       SCL=0;
 214   1       delay();
 215   1       return(AF);
 216   1      }
 217                  
 218          uchar  LoadByte()
 219          {
 220   1        uchar Cnt,Dat=0;
 221   1        
 222   1        SDO=1;  
 223   1        for(Cnt=0;Cnt<8;Cnt++)
 224   1            {
 225   2              SCL=1;   
 226   2              delay();    
 227   2              Dat=(Dat<<1)| SDI;
 228   2                      SCL=0;
 229   2                      delay(); 
 230   2            }
 231   1        return(Dat);
 232   1      }
 233          
 234          void Ack_I2c()
 235          {
 236   1        SDO=0;
 237   1        SCL=1;
 238   1        delay();  
 239   1        SCL=0;      
 240   1        delay();    
 241   1      }
C51 COMPILER V7.20   24C02A                                                                02/25/2006 16:39:28 PAGE 5   

 242          
 243          void ShowPicture(uchar byPicID)
 244          {
 245   1              uchar col,pg;
 246   1              uchar code *pC;
 247   1              pC = pic + (byPicID&0x03)*128*8;
 248   1              for(pg = 0; pg < 8; pg++)
 249   1              {
 250   2                      LCDCMR = SET_PAGE | pg;
 251   2                  LCDCMR = SET_COL  | 0;
 252   2                      for(col = 0; col < 128; col++)
 253   2                              LCDDR = *pC++;
 254   2              }
 255   1      }
 256          
 257          void ShowHint(uchar aNo)
 258          {
 259   1              uchar col,pg;
 260   1              uchar code *pC;
 261   1              pC = Hint + (aNo&0x03)*32*8;
 262   1              for(pg = 6; pg < 8; pg++)
 263   1              {
 264   2                      LCDCMR = SET_PAGE | pg;
 265   2                  LCDCMR = SET_COL  | 0;
 266   2                      for(col = 0; col < 128; col++)
 267   2                              LCDDR = *pC++;
 268   2              }
 269   1      }
 270          
 271          void Beep()
 272          {
 273   1        uchar n;
 274   1        TGCON=0x88;
 275   1        for (n=0;n<20;n++)
 276   1        {
 277   2         while (~To_5ms) {}
 278   2         To_5ms=0;
 279   2        }
 280   1        TGCON=0x80;
 281   1        for (n=0;n<20;n++)
 282   1        {
 283   2         while (~To_5ms) {}
 284   2         To_5ms=0;
 285   2        }
 286   1        TGCON=0x88;
 287   1        for (n=0;n<20;n++)
 288   1        {
 289   2         while (~To_5ms) {}
 290   2         To_5ms=0;
 291   2        }
 292   1        TGCON=0x80;
 293   1      }
 294          
 295          void main()
 296          {
 297   1          uint  i;
 298   1          uchar n;
 299   1              TMOD=0x01;
 300   1          LCDCMR=Cls;
 301   1          LCDCMR=LCD_on;
 302   1          LCDCMR=INC_enb;
 303   1          EA=1;ET0=1;TR0=1;
C51 COMPILER V7.20   24C02A                                                                02/25/2006 16:39:28 PAGE 6   

 304   1          LPTCTR=0x00;
 305   1          LPTDTR=0xff;
 306   1          ShowPicture(0);
 307   1              while(1)
 308   1              {
 309   2               while (KEYPAD==0) {};
 310   2           switch(KEYPAD)
 311   2               {
 312   3                case 0x70://Read
 313   3                 LPTCTR=0x04;  //打开电源
 314   3                 ShowHint(2);
 315   3                         for(i=0;i<256;i++)
 316   3                          {
 317   4                           if ((i&7)==0)
 318   4                                {
 319   5                                 Start_I2c();  
 320   5                     if (SendByte(0xA0)) break;
 321   5                     if (SendByte(i)) break;
 322   5                     Stop_I2c();
 323   5                     Start_I2c(); 
 324   5                     if (SendByte(0xA1)) break;
 325   5                                }
 326   4                   Buf[i]=LoadByte();
 327   4                   if ((i&7)==7) Stop_I2c();
 328   4                                 else  Ack_I2c();
 329   4                               n=i;
 330   4                  }
 331   3                         Beep();
 332   3                         LPTCTR=0x00;  //关闭电源
 333   3                         if (n!=0xff) ShowHint(1);
 334   3                           else ShowHint(0);
 335   3                 break;
 336   3                 
 337   3                case 0x71://Write
 338   3                     LPTCTR=0x04;  //打开电源
 339   3                     ShowHint(3);
 340   3                 for(i=0;i<256;i++)
 341   3                          {
 342   4                   if ((i&7)==0)
 343   4                                {
 344   5                                 Start_I2c();  
 345   5                     if (SendByte(0xA0)) break;
 346   5                     if (SendByte(i)) break;
 347   5                                }
 348   4                   if (SendByte(Buf[i])) break;
 349   4                   if ((i&7)==7) 
 350   4                                 {
 351   5                                  Stop_I2c();
 352   5                      for(n=0;n<4;n++)  //Wait 15-20ms
 353   5                                    {
 354   6                         while(~To_5ms){}
 355   6                         To_5ms=0;
 356   6                                        }
 357   5                                 }
 358   4                               n=i;
 359   4                  }
 360   3                 Beep();
 361   3                         LPTCTR=0x00;  //关闭电源
 362   3                         if (n!=0xff) ShowHint(1);
 363   3                           else ShowHint(0);
 364   3                 break;
 365   3            case 0x72://Clear Buffer
C51 COMPILER V7.20   24C02A                                                                02/25/2006 16:39:28 PAGE 7   

 366   3                     for(i=0;i<256;i++) Buf[i]=0;
 367   3                         break;
 368   3                default:;
 369   3           }  
 370   2          while (KEYPAD) {};
 371   2              }
 372   1      }
 373          
 374          void timer0() interrupt 1
 375          {  
 376   1              TL0=0x7B;   //5ms Interval,XTAL=12Mhz
 377   1              TH0=0xEC;
 378   1          To_5ms=1;
 379   1              if (++Count>49)
 380   1                {
 381   2             RTCON=Msec_BCD;
 382   2             Msec=RTCON;
 383   2             RTCON=Sec_BCD;
 384   2             Sec=RTCON;
 385   2             RTCON=Min_BCD;
 386   2             Min=RTCON;
 387   2             RTCON=Hou_BCD;
 388   2             Hour=RTCON;
 389   2             RTCON=Day_BCD;
 390   2             Day=RTCON;
 391   2             RTCON=Week_BCD;
 392   2             Week=RTCON;
 393   2             RTCON=Mon_BCD;
 394   2             Month=RTCON;
 395   2             RTCON=Year_BCD;
 396   2             Year=RTCON;
 397   2             Count=0;
 398   2                }
 399   1      }
 400          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    726    ----
   CONSTANT SIZE    =   2048    ----
   XDATA SIZE       =  16384    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     10       3
   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 + -