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

📄 main.lst

📁 本程序可以实现串口通信及液晶显示功能
💻 LST
📖 第 1 页 / 共 2 页
字号:
 184   3                                      case 'W':
 185   3                                      {       printf("RCVOK\r\n");
 186   4                                                      printf("PROGRAMOK\r\n");
 187   4                                                      printf("VERIFYERR\r\n");
 188   4                                              clearbuff();
 189   4                                      }
 190   3                                      break;
 191   3      
 192   3                                      default:
 193   3                                         clearbuff();
 194   3                                      break;
 195   3                              }
 196   2      
 197   2                      }
 198   1      }
 199          
 200          //-------------------------------------------
 201          void clearbuff(void)
 202          {
 203   1      byte i;
 204   1              for(i = 0; i < gB_RxIndex; i++)
 205   1              { gBa_DebugBuf[i] = 0; }
 206   1              gB_RxIndex = 0;
 207   1      }
 208          ///////////////////////////////////////////////////////////////////////////////
 209          //      interrupt                                                              //
 210          ///////////////////////////////////////////////////////////////////////////////
 211          void TIME0(void) interrupt 0x01 using 1// for TIME0   0.2ms
 212          { 
 213   1              TL0 = 0x47;      //  
 214   1          gB_T1count++;
 215   1      }
 216          
 217          void TIME1(void) interrupt 0x03 using 1// for TIME0   0.2ms
 218          { 
 219   1              TH0 = 0x00; 
 220   1          gB_T2count ++;
 221   1              //-----------------------------------------
 222   1          p++ ;
 223   1                if(p>=2500)
 224   1            {
 225   2                         p = 0;
 226   2                         if(r_done)                                   //20041205  有效计时
 227   2                        {
 228   3                         Clock[0] = Clock[0]+1; 
 229   3                              SBUF =   Clock[0] ;
 230   3                                 if(Clock[0]>=60)
 231   3                                    {
 232   4                                      Clock[0] = 0 ;
 233   4                                          Clock[1] = Clock[1]+1 ;
 234   4                                              if(Clock[1]>=60)
 235   4                                                     {
 236   5                                                       Clock[1] = 0 ;
 237   5                                                           Clock[2] = Clock[2]+1 ;
 238   5                                                                       if(Clock[2]>=24)
 239   5                                                                          {
 240   6                                                                                 Clock[2] = 0 ;
C51 COMPILER V7.50   MAIN                                                                  07/21/2006 15:57:40 PAGE 5   

 241   6                                                                              }   
 242   5                                                              }                 
 243   4                                              }
 244   3                         }
 245   2                }
 246   1      }
 247                  
 248          
 249          /*=======================================================
 250          显示字符串
 251          =======================================================*/
 252          void ePutstr(Uchar x,Uchar y, Uchar code *ptr) 
 253          {
 254   1      Uchar i,l=0;
 255   1          while (ptr[l] >31){l++;};
 256   1      
 257   1          for (i=0;i<16;i++)        
 258   1              { DispOneChar(x++,y,ptr[i]);
 259   2              if ( x == 16 ){
 260   3                  x = 0; y ^= 1;
 261   3              }
 262   2          }
 263   1      }
 264          /*=======================================================
 265          显示光标定位
 266          =======================================================*/
 267          void Disp_XY( char posx,char posy) {
 268   1      
 269   1      Uchar temp;
 270   1      
 271   1          temp = posx & 0xf;
 272   1          posy &= 0x1;
 273   1          if ( posy )temp |= 0x40;
 274   1          temp |= 0x80;
 275   1          LcdWriteCommand(temp,0);
 276   1      }
 277          
 278          /*=======================================================
 279          按指定位置显示数出一个字符
 280          =======================================================*/
 281          void DispOneChar(Uchar x,Uchar y,Uchar Wdata) {
 282   1      
 283   1          Disp_XY( x, y );                // 定位显示地址
 284   1          LcdWriteData( Wdata );            // 写字符
 285   1      }
 286          
 287          /*=======================================================
 288          初始化程序, 必须按照产品资料介绍的初始化过程进行
 289          =======================================================*/
 290          void LcdReset( void ) 
 291          {
 292   1          LcdWriteCommand( 0x38, 0);            // 显示模式设置(不检测忙信号)
 293   1              Delay5Ms();
 294   1          LcdWriteCommand( 0x38, 0);            // 共三次
 295   1              Delay5Ms();
 296   1          LcdWriteCommand( 0x38, 0);
 297   1              Delay5Ms();
 298   1      
 299   1          LcdWriteCommand( 0x38, 1);            // 显示模式设置(以后均检测忙信号)
 300   1          LcdWriteCommand( 0x08, 1);            // 显示关闭
 301   1          LcdWriteCommand( 0x01, 1);            // 显示清屏
 302   1          LcdWriteCommand( 0x06, 1);            // 显示光标移动设置
C51 COMPILER V7.50   MAIN                                                                  07/21/2006 15:57:40 PAGE 6   

 303   1          LcdWriteCommand( 0x0c, 1);            // 显示开及光标设置
 304   1      }
 305          
 306          /*=======================================================
 307          写控制字符子程序: E=1 RS=0 RW=0
 308          =======================================================*/
 309          void LcdWriteCommand( Uchar CMD,Uchar AttribC ) {
 310   1      
 311   1          if (AttribC) WaitForEnable();                // 检测忙信号?
 312   1      
 313   1          RS = 0;  RW = 0; _nop_();
 314   1      
 315   1          DataPort = CMD; _nop_();
 316   1          // 送控制字子程序
 317   1      
 318   1          Elcm = 1; _nop_(); _nop_();Elcm = 0;            // 操作允许脉冲信号
 319   1      }
 320          
 321          /*=======================================================
 322          当前位置写字符子程序: E =1 RS=1 RW=0
 323          =======================================================*/
 324          void LcdWriteData( char dataW ) {
 325   1      
 326   1          WaitForEnable();
 327   1              // 检测忙信号
 328   1      
 329   1          RS = 1; RW = 0; _nop_();
 330   1      
 331   1          DataPort = dataW;  _nop_();
 332   1      
 333   1          Elcm = 1;  _nop_(); _nop_();  Elcm = 0;        // 操作允许脉冲信号
 334   1      
 335   1      }
 336          
 337          /*=======================================================
 338          正常读写操作之前必须检测LCD控制器状态:    CS=1 RS=0 RW=1
 339          DB7:    0  LCD控制器空闲; 1  LCD控制器忙
 340          ========================================================*/
 341          void WaitForEnable( void ) {
 342   1      
 343   1          DataPort = 0xff;
 344   1      
 345   1          RS =0; RW = 1; _nop_();
 346   1               Elcm = 1;  _nop_(); _nop_();
 347   1      
 348   1          while( DataPort & Busy );
 349   1      
 350   1          Elcm = 0;
 351   1      }
 352          
 353          // 短延时
 354          void Delay5Ms(void)
 355          {
 356   1          Uint i = 5552;
 357   1          while(i--);
 358   1      }
 359          
 360          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    614    ----
C51 COMPILER V7.50   MAIN                                                                  07/21/2006 15:57:40 PAGE 7   

   CONSTANT SIZE    =    150    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     41       9
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      6    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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