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

📄 hx8303_b.lst

📁 C8051F单片机应用和液晶显示器编程的例子
💻 LST
📖 第 1 页 / 共 2 页
字号:
 253   4              otp_value=0x00;
 254   4            wr_com8080(otp_value);*/
 255   4           }
 256   3         }
 257   2        }
 258   1       next:
 259   1       //==========================
 260   1       RS=1;
 261   1       //==========================
 262   1      }
 263          //=======================================================================
 264          void pic_wait(uint count)
 265          {
 266   1       uint i,j,k;
 267   1       if(autorun0==0)
 268   1        {
 269   2         for(i=0;i<count;i++)
 270   2         for(j=0;j<10;j++)
 271   2         for(k=0;k<120;k++)
 272   2          {
 273   3           if(KEY1!=1)
 274   3            {
 275   4              autorun0=1;
 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   2        }
 290   1       else
 291   1        {
 292   2         while(1)
 293   2          {
 294   3           if(KEY1!=1)
 295   3            {
 296   4             for(i=0;i<100;i++)
 297   4             for(j=0;j<100;j++)
 298   4               {
 299   5                ;
 300   5               }
 301   4            while(KEY1==0)
 302   4                 {
 303   5                       ;
C51 COMPILER V7.05   HX8303_B                                                              09/11/2005 18:32:58 PAGE 6   

 304   5                 }
 305   4             goto next;
 306   4            }
 307   3           //==========================
 308   3           if(KEY7!=1)
 309   3           {
 310   4            while(KEY7!=1)
 311   4                {
 312   5                 ;
 313   5                }
 314   4            kk=1000;
 315   4            goto next; 
 316   4               }
 317   3           //==========================
 318   3               DelayX10ms(25);
 319   3           if(KEY2==0)
 320   3           {
 321   4            while(KEY2==0)
 322   4                {
 323   5                ;
 324   5                }
 325   4                /*wr_com8080(0x2a);
 326   4            otp_value=otp_value+1;
 327   4            if(otp_value==256)
 328   4              otp_value=0xff;
 329   4            wr_com8080(otp_value);*/
 330   4           }
 331   3          //==========================
 332   3          if(KEY4==0)
 333   3           {
 334   4            while(KEY4==0)
 335   4                {
 336   5                ;
 337   5                }
 338   4                /*wr_com8080(0x2a);
 339   4            otp_value=otp_value-1;
 340   4            if(otp_value==-1)
 341   4              otp_value=0x00;
 342   4            wr_com8080(otp_value);*/
 343   4           }
 344   3          }
 345   2        }
 346   1       next:
 347   1       //==========================
 348   1       RS=1;
 349   1       //==========================
 350   1      }
 351          //=============END===========================================================
 352          //=============K9F5608U0A===============
 353          //=============RESET====================
 354          void reset(void)
 355          {
 356   1       MCE=0;
 357   1       MR_B=1;
 358   1       MRE=1;
 359   1       MWE=1;
 360   1       MCLE=0;
 361   1       MALE=0;
 362   1       P1=0xff; 
 363   1       MCLE=1;
 364   1       MALE=0;
 365   1       MWE=0;
C51 COMPILER V7.05   HX8303_B                                                              09/11/2005 18:32:58 PAGE 7   

 366   1       MWE=0;
 367   1       MWE=0;
 368   1       MWE=1;
 369   1       MWE=1;
 370   1       MWE=1;
 371   1       MCLE=0;
 372   1       MALE=0;
 373   1       while(MR_B==0)
 374   1              {
 375   2               ;
 376   2              }
 377   1      }
 378          //============命令输出函数=================
 379          void writecomd(unsigned char comd)
 380          { 
 381   1        P1=comd;
 382   1        MCLE=1;
 383   1        MALE=0;
 384   1        MWE=0;
 385   1        MWE=0;
 386   1        MWE=1;
 387   1        MWE=1;
 388   1        MCLE=0;
 389   1        MALE=0;
 390   1      }
 391          //============地址输出函数====================
 392          void writeaddr(uchar raddrl,uchar raddrh)
 393          { 
 394   1       P1=0x00;
 395   1       MCLE=0;
 396   1       MALE=1;
 397   1       MWE=0;
 398   1       MWE=0;
 399   1       MWE=1;
 400   1       MWE=1;
 401   1       P1=raddrl;
 402   1       MWE=0;
 403   1       MWE=0;
 404   1       MWE=1;
 405   1       MWE=1;
 406   1       P1=raddrh;
 407   1       MWE=0;
 408   1       MWE=0;
 409   1       MWE=1;
 410   1       MWE=1;
 411   1       MCLE=0;
 412   1       MALE=0;
 413   1      }
 414          //=============数据输出函数=============
 415          void writedata(void)
 416          { 
 417   1       P1= *pointer;
 418   1       MWE=0;
 419   1       MWE=0;
 420   1       MWE=1;
 421   1       MWE=1;
 422   1       pointer++;
 423   1      }
 424          //=============读操作==================
 425          uchar readsta(void)
 426          { 
 427   1       unsigned char soop;
C51 COMPILER V7.05   HX8303_B                                                              09/11/2005 18:32:58 PAGE 8   

 428   1       P1MDOUT=0x00;
 429   1       P1=0xff;
 430   1       DelayX1ms(20);
 431   1       MRE=0;
 432   1       MRE=0;
 433   1       soop=P1;
 434   1       MRE=1;
 435   1       P1MDOUT=0xff;
 436   1       return(soop);
 437   1      }
 438          //==============整块擦除1块=32pages 共2048块====
 439          uchar blockerase(uint block)
 440          {
 441   1       unsigned char result;
 442   1       writecomd(0x60);
 443   1       block=block*32;
 444   1       P1=block&0x00ff;
 445   1       MCLE=0;
 446   1       MALE=1;
 447   1       MWE=0;
 448   1       MWE=0;
 449   1       MWE=0;
 450   1       MWE=1;
 451   1       MWE=1;
 452   1       MWE=1;
 453   1       P1=(block&0xff00)>>8;
 454   1       MWE=0;
 455   1       MWE=0;
 456   1       MWE=0;
 457   1       MWE=1;
 458   1       MWE=1;
 459   1       MWE=1;
 460   1       MCLE=0;
 461   1       MALE=0;
 462   1       writecomd(0xd0);
 463   1       while(MR_B==0)
 464   1              {
 465   2               ;
 466   2              }
 467   1       writecomd(0x70);
 468   1       result=readsta();
 469   1       if((result&0x01)== 1)
 470   1        {
 471   2         return(1);
 472   2        }//出错处理
 473   1       else
 474   1         return(0);
 475   1      }
 476          //==============整页写入的详细代码======
 477          uchar pagewrite(uchar raddrl,uchar raddrh)
 478          { 
 479   1       int i;
 480   1       unsigned char result;
 481   1       pointer = &buffer;
 482   1       writecomd(0x00);//必须指出开始地址
 483   1       writecomd(0x80);
 484   1       writeaddr(raddrl,raddrh);
 485   1       for(i=0;i<512;i++)
 486   1         {
 487   2          writedata();
 488   2         }
 489   1       writecomd(0x10); 
C51 COMPILER V7.05   HX8303_B                                                              09/11/2005 18:32:58 PAGE 9   

 490   1       while(MR_B==0)
 491   1              {
 492   2               ;
 493   2              }
 494   1       writecomd(0x70);
 495   1       result=readsta();
 496   1       if((result&0x01) == 1)
 497   1        {
 498   2         return(1);
 499   2        }//出错处理
 500   1       else
 501   1         return(0);
 502   1       }
 503          //===============
 504          //-----------------------------------------------------------------------------
 505          // SYSCLK_Init
 506          //-----------------------------------------------------------------------------
 507          //
 508          // This routine initializes the system clock to use the internal 24.5MHz / 8 
 509          // oscillator as its clock source.  Also enables missing clock detector reset.
 510          //
 511          void SYSCLK_Init (void)
 512          {
 513   1         OSCICN = 0x80;                         // IOSCEN IFRDY 0 0 0 0 IFCN1 IFCN0 (sfr OSCICN=0xB2;内部振荡器

⌨️ 快捷键说明

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