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

📄 4506_8bit_ok.lst

📁 C8051F单片机应用和液晶显示器编程的例子
💻 LST
📖 第 1 页 / 共 2 页
字号:
 240   2         for(i=0;i<count;i++)
 241   2         for(j=0;j<10;j++)
C51 COMPILER V7.05   4506_8BIT_OK                                                          09/21/2005 13:21:37 PAGE 5   

 242   2         for(k=0;k<120;k++)
 243   2          {
 244   3           if(KEY1!=1)
 245   3            {
 246   4              autorun0=1;
 247   4              goto next;
 248   4            }
 249   3           //==========================
 250   3           if(KEY7!=1)
 251   3           {
 252   4            while(KEY7!=1)
 253   4                {
 254   5                 ;
 255   5                }
 256   4            kk=1000;
 257   4            goto next; 
 258   4               }
 259   3          }
 260   2        }
 261   1       else
 262   1        {
 263   2         while(1)
 264   2          {
 265   3           if(KEY1!=1)
 266   3            {
 267   4             for(i=0;i<100;i++)
 268   4             for(j=0;j<100;j++)
 269   4               {
 270   5                ;
 271   5               }
 272   4            while(KEY1==0)
 273   4                 {
 274   5                       ;
 275   5                 }
 276   4             goto next;
 277   4            }
 278   3           //==========================
 279   3           if(KEY7!=1)
 280   3           {
 281   4            while(KEY7!=1)
 282   4                {
 283   5                 ;
 284   5                }
 285   4            kk=1000;
 286   4            goto next; 
 287   4               }
 288   3           //==========================
 289   3               DelayX10ms(25);
 290   3           if(KEY2==0)
 291   3           {
 292   4            while(KEY2==0)
 293   4                {
 294   5                ;
 295   5                }
 296   4                wr_com8080(0x2a);
 297   4            otp_value=otp_value+1;
 298   4            if(otp_value==256)
 299   4              otp_value=0xff;
 300   4            wr_com8080(otp_value);
 301   4           }
 302   3          //==========================
 303   3          if(KEY4==0)
C51 COMPILER V7.05   4506_8BIT_OK                                                          09/21/2005 13:21:37 PAGE 6   

 304   3           {
 305   4            while(KEY4==0)
 306   4                {
 307   5                ;
 308   5                }
 309   4                wr_com8080(0x2a);
 310   4            otp_value=otp_value-1;
 311   4            if(otp_value==-1)
 312   4              otp_value=0x00;
 313   4            wr_com8080(otp_value);
 314   4           }
 315   3          }
 316   2        }
 317   1       next:
 318   1       //==========================
 319   1       RS=1;
 320   1       //==========================
 321   1      }
 322          //=============END===========================================================
 323          //=============K9F5608U0A===============
 324          //=============RESET====================
 325          void reset(void)
 326          {
 327   1       MCE=0;
 328   1       MR_B=1;
 329   1       MRE=1;
 330   1       MWE=1;
 331   1       MCLE=0;
 332   1       MALE=0;
 333   1       P1=0xff; 
 334   1       MCLE=1;
 335   1       MALE=0;
 336   1       MWE=0;
 337   1       MWE=0;
 338   1       MWE=0;
 339   1       MWE=1;
 340   1       MWE=1;
 341   1       MWE=1;
 342   1       MCLE=0;
 343   1       MALE=0;
 344   1       while(MR_B==0)
 345   1              {
 346   2               ;
 347   2              }
 348   1      }
 349          //============命令输出函数=================
 350          void writecomd(unsigned char comd)
 351          { 
 352   1        P1=comd;
 353   1        MCLE=1;
 354   1        MALE=0;
 355   1        MWE=0;
 356   1        MWE=0;
 357   1        MWE=1;
 358   1        MWE=1;
 359   1        MCLE=0;
 360   1        MALE=0;
 361   1      }
 362          //============地址输出函数====================
 363          void writeaddr(uchar raddrl,uchar raddrh)
 364          { 
 365   1       P1=0x00;
C51 COMPILER V7.05   4506_8BIT_OK                                                          09/21/2005 13:21:37 PAGE 7   

 366   1       MCLE=0;
 367   1       MALE=1;
 368   1       MWE=0;
 369   1       MWE=0;
 370   1       MWE=1;
 371   1       MWE=1;
 372   1       P1=raddrl;
 373   1       MWE=0;
 374   1       MWE=0;
 375   1       MWE=1;
 376   1       MWE=1;
 377   1       P1=raddrh;
 378   1       MWE=0;
 379   1       MWE=0;
 380   1       MWE=1;
 381   1       MWE=1;
 382   1       MCLE=0;
 383   1       MALE=0;
 384   1      }
 385          //=============数据输出函数=============
 386          void writedata(void)
 387          { 
 388   1       P1= *pointer;
 389   1       MWE=0;
 390   1       MWE=0;
 391   1       MWE=1;
 392   1       MWE=1;
 393   1       pointer++;
 394   1      }
 395          //=============读操作==================
 396          uchar readsta(void)
 397          { 
 398   1       unsigned char soop;
 399   1       P1MDOUT=0x00;
 400   1       P1=0xff;
 401   1       DelayX1ms(20);
 402   1       MRE=0;
 403   1       MRE=0;
 404   1       soop=P1;
 405   1       MRE=1;
 406   1       P1MDOUT=0xff;
 407   1       return(soop);
 408   1      }
 409          //==============整块擦除1块=32pages 共2048块====
 410          uchar blockerase(uint block)
 411          {
 412   1       unsigned char result;
 413   1       writecomd(0x60);
 414   1       block=block*32;
 415   1       P1=block&0x00ff;
 416   1       MCLE=0;
 417   1       MALE=1;
 418   1       MWE=0;
 419   1       MWE=0;
 420   1       MWE=0;
 421   1       MWE=1;
 422   1       MWE=1;
 423   1       MWE=1;
 424   1       P1=(block&0xff00)>>8;
 425   1       MWE=0;
 426   1       MWE=0;
 427   1       MWE=0;
C51 COMPILER V7.05   4506_8BIT_OK                                                          09/21/2005 13:21:37 PAGE 8   

 428   1       MWE=1;
 429   1       MWE=1;
 430   1       MWE=1;
 431   1       MCLE=0;
 432   1       MALE=0;
 433   1       writecomd(0xd0);
 434   1       while(MR_B==0)
 435   1              {
 436   2               ;
 437   2              }
 438   1       writecomd(0x70);
 439   1       result=readsta();
 440   1       if((result&0x01)== 1)
 441   1        {
 442   2         return(1);
 443   2        }//出错处理
 444   1       else
 445   1         return(0);
 446   1      }
 447          //==============整页写入的详细代码======
 448          uchar pagewrite(uchar raddrl,uchar raddrh)
 449          { 
 450   1       int i;
 451   1       unsigned char result;
 452   1       pointer = &buffer;
 453   1       writecomd(0x00);//必须指出开始地址
 454   1       writecomd(0x80);
 455   1       writeaddr(raddrl,raddrh);
 456   1       for(i=0;i<512;i++)
 457   1         {
 458   2          writedata();
 459   2         }
 460   1       writecomd(0x10); 
 461   1       while(MR_B==0)
 462   1              {
 463   2               ;
 464   2              }
 465   1       writecomd(0x70);
 466   1       result=readsta();
 467   1       if((result&0x01) == 1)
 468   1        {
 469   2         return(1);
 470   2        }//出错处理
 471   1       else
 472   1         return(0);
 473   1       }
 474          //===============
 475          //-----------------------------------------------------------------------------
 476          // SYSCLK_Init
 477          //-----------------------------------------------------------------------------
 478          //
 479          // This routine initializes the system clock to use the internal 24.5MHz / 8 
 480          // oscillator as its clock source.  Also enables missing clock detector reset.
 481          //
 482          void SYSCLK_Init (void)
 483          {
 484   1         OSCICN = 0x80;                         // IOSCEN IFRDY 0 0 0 0 IFCN1 IFCN0 (sfr OSCICN=0xB2;内部振荡器

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -