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

📄 lcd.lst

📁 单片机计算器,可计算多位小数点的+-*/.可在lcd上显示
💻 LST
字号:
C51 COMPILER V8.02   LCD                                                                   08/23/2007 14:58:57 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN lcd.OBJ
COMPILER INVOKED BY: C:\Keil\C51\Bin\c51.exe lcd.c DB SB OE ROM(LARGE) SMALL OT(6,SPEED) WL(2) RB(0)

line level    source

*** WARNING C500 IN LINE 1 OF LCD.C: LICENSE ERROR (R225: REGISTRATION FILE 'TOOLS.INI' NOT FOUND)

   1          /*+++++++++++++++++++++++++++++++++++++++++++++++++++/
   2           程序名 :lcd.c液晶显示子程序
   3           入口:坐标X,Y和所显示的字符
   4           出口:显示
   5          +++++++++++++++++++++++++++++++++++++++++++++++++++*/
   6          #include "CPLD.h"
   7          char xdata Lcd1602CmdPort     _at_ 0xf1fc;              //E=1  RS=0 RW=0
   8          char xdata Lcd1602WdataPort   _at_ 0xf1fd;      //E=1  RS=1 RW=0
   9          char xdata Lcd1602StatusPort  _at_ 0xf1fe;      //E=1 RS=0 RW=1
  10          
  11           extern void Putstr(unsigned char x,unsigned char y,unsigned char code *ptr) 
  12            {
  13   1         unsigned char i,l=0;
  14   1              while (ptr[l] >31){l++;};
  15   1              for (i=0;i<l;i++) 
  16   1                 {
  17   2                      DispOneChar(x,y++,ptr[i]);
  18   2                      if ( y == 16 )
  19   2                      {       x ^= 1; y= 0;
  20   3                      }
  21   2                 }
  22   1        }
  23          extern void ePutStr(unsigned char x,unsigned char y, unsigned char *ptr) 
  24          {
  25   1          unsigned char i,l=0;
  26   1              while (ptr[l] >31){l++;};     //如果数组中的数为字符,计算字符的个数
  27   1              for (i=0;i<l;i++) 
  28   1                 {
  29   2                      DispOneChar(x,y++,ptr[i]);
  30   2      
  31   2                              
  32   2                      if ( y == 16 )
  33   2                      {    x^=1; y=0;
  34   3                      }
  35   2              }
  36   1      }
  37          /*=======================================================
  38           显示光标定位4行
  39          =======================================================*/
  40          extern void LocateXY( char posx,char posy) 
  41          
  42          {unsigned char temp;
  43   1      
  44   1              temp=0x00;
  45   1      //      posy &= 0x03;
  46   1         switch ( posx)
  47   1         {
  48   2          case 0:;
  49   2              break;
  50   2          case 1:temp |= 0x40;
  51   2              break;
  52   2          default:;
  53   2         }
  54   1        
C51 COMPILER V8.02   LCD                                                                   08/23/2007 14:58:57 PAGE 2   

  55   1         
  56   1         
  57   1         temp |=posy;
  58   1         
  59   1          temp|= 0x80;
  60   1              LcdWriteCommand(temp,0);
  61   1      }
  62          /*=======================================================
  63           按指定位置显示输出一个字符
  64          =======================================================*/
  65           extern void DispOneChar(unsigned char x,unsigned char y,unsigned char Wdata)
  66           {
  67   1              LocateXY( x, y );                               // 定位显示地址
  68   1              LcdWriteData( Wdata );                  // 写字符
  69   1      }
  70          
  71          /*=======================================================
  72           初始化程序, 必须按照产品资料介绍的初始化过程进行
  73          =======================================================*/
  74           extern void LcdReset( void )
  75           { Delay5Ms();
  76   1          Delay5Ms();
  77   1           Delay5Ms();
  78   1       LcdWriteCommand( 0x38, 0);                     // 显示模式设置(不检测忙信号)
  79   1       Delay5Ms();    
  80   1       LcdWriteCommand( 0x38, 0);                     // 共三次
  81   1       Delay5Ms();    
  82   1      LcdWriteCommand( 0x38, 0);
  83   1              //=============================
  84   1              LcdWriteCommand( 0x38, 1);                      // 显示模式设置(以后均检测忙信号 参数--"1")
  85   1          LcdWriteCommand( 0x08, 1);                  // 显示关闭
  86   1              LcdWriteCommand( 0x01, 1);                      // 显示清屏
  87   1              LcdWriteCommand( 0x06, 1);                      // 显示光标移动设置
  88   1              LcdWriteCommand( 0x0c, 1);                      // 显示开及光标设置
  89   1      }
  90          
  91          /*=======================================================
  92           写控制字符子程序: E=1 RS=0 RW=0
  93          =======================================================*/
  94           extern void LcdWriteCommand(unsigned char CMD,unsigned char AttribC ) {
  95   1      
  96   1              if (AttribC) 
  97   1              {
  98   2                      P0=0xff;
  99   2                      while( Lcd1602StatusPort & Busy );              // 检测忙信号?
 100   2              }
 101   1              Lcd1602CmdPort = CMD;
 102   1      }
 103                  
 104          /*=======================================================
 105           当前位置写字符子程序: E =1 RS=1 RW=0
 106          =======================================================*/
 107           extern void LcdWriteData( char dataW ) {
 108   1      
 109   1              while( Lcd1602StatusPort & Busy );                                      // 检测忙信号
 110   1      
 111   1              Lcd1602WdataPort = dataW;
 112   1      }
 113          
 114          
 115          
 116          //-------------------------------------显示清屏-----------------------------------------------------------
C51 COMPILER V8.02   LCD                                                                   08/23/2007 14:58:57 PAGE 3   

             --------------
 117           extern void cls(void)
 118             {             LcdWriteCommand( 0x01, 1);                     // 显示清屏
 119   1          }
 120          //--------------------------------------------------------------------------------------------------------
             -----
 121          
 122          
 123          
 124          
 125          
C51 COMPILER V8.02   LCD                                                                   08/23/2007 14:58:57 PAGE 4   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


_LcdWriteData. . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  dataW. . . . . . . . . . . . . . . .  * REG *  DATA   CHAR     0007H  1
P0 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0080H  1
P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
P3 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
IE . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A8H  1
Lcd1602StatusPort. . . . . . . . . . .  PUBLIC   XDATA  CHAR     F1FEH  1
size_t . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_INT    -----  2
_DispOneChar . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  x. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  y. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
  Wdata. . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
IP . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B8H  1
LcdReset . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
Lcd1602CmdPort . . . . . . . . . . . .  PUBLIC   XDATA  CHAR     F1FCH  1
SCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0098H  1
TCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0088H  1
_ePutStr . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  x. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  y. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0001H  1
  ptr. . . . . . . . . . . . . . . . .  AUTO     DATA   PTR      0002H  3
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0005H  1
  l. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0006H  1
cls. . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
_LcdWriteCommand . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  CMD. . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  AttribC. . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
T2CON. . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00C8H  1
Delay5Ms . . . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
_LocateXY. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  posx . . . . . . . . . . . . . . . .  * REG *  DATA   CHAR     0006H  1
  posy . . . . . . . . . . . . . . . .  * REG *  DATA   CHAR     0005H  1
  temp . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
_Putstr. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  x. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  y. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0001H  1
  ptr. . . . . . . . . . . . . . . . .  AUTO     DATA   PTR      0002H  2
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0004H  1
  l. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0005H  1
PSW. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00D0H  1
Lcd1602WdataPort . . . . . . . . . . .  PUBLIC   XDATA  CHAR     F1FDH  1


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    316    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      14
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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