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

📄 b07.lst

📁 单片机实验程序-13种-17.4M-pdf.zip
💻 LST
字号:
C51 COMPILER V6.02  B07                                                                    10/18/2005 09:28:08 PAGE 1   


C51 COMPILER V6.02, COMPILATION OF MODULE B07
OBJECT MODULE PLACED IN E:\C51\B07.OBJ
COMPILER INVOKED BY: C:\COMP51\C51.EXE E:\C51\B07.C DB SB OE

stmt level    source

   1          
   2          #define PD1  61         /* 122/2 分成左右两半屏(122x32) */
   3          
   4          unsigned char Column;
   5          unsigned char Page_ ;   /* 页地址寄存器 D1,DO:页地址 */
   6          unsigned char Code_ ;   /* 字符代码寄存器 */
   7          
   8          unsigned char Command;  /* 指令寄存器 */
   9          unsigned char LCDData;  /* 数据寄存器 */
  10          
  11          #define CWADD1 0xfa00   /* 写指令代码地址(E1) */
  12          #define DWADD1 0xfa40   /* 写显示数据地址(E1) */
  13          #define CRADD1 0xfa80   /* 读状态字地址(E1) */
  14          #define DRADD1 0xfac0   /* 读显示数据地址(E1) */
  15          
  16          #define CWADD2 0xf800   /* 写指令代码地址(E2) */
  17          #define DWADD2 0xf840   /* 写显示数进地址(E2) */
  18          #define CRADD2 0xf880   /* 读状态字地址(E2) */
  19          #define DRADD2 0xf8c0   /* 读显示数据地址(E2) */
  20          
  21          extern unsigned char IN(unsigned int port);
  22          extern void OUT(unsigned int port, unsigned char v);
  23          
  24          /* 英文字模库    8x8 点阵 */
  25          unsigned char const EETAB[][8]={
  26                  {0x38,0x44,0x44,0x44,0x44,0x44,0x38,0x00},  /* 0 */
  27                  {0x10,0x30,0x50,0x10,0x10,0x10,0x7c,0x00},  /* 1 */
  28                  {0x38,0x44,0x04,0x08,0x10,0x20,0x7c,0x00},  /* 2 */
  29                  {0x78,0x84,0x04,0x38,0x04,0x84,0x78,0x00}}; /* 3 */
  30          
  31          /* 中文字模库   16x16点阵 */
  32          unsigned char const CCTAB[][32] ={
  33                  {0x00,0x04,0xe4,0x24,0x24,0x64,0xb4,0x2f, /* 南 */
  34                   0x24,0xa4,0x64,0x24,0x24,0xe6,0x04,0x00,
  35                   0x00,0x00,0x7f,0x04,0x05,0x05,0x05,0x7f,
  36                   0x05,0x05,0x05,0x25,0x44,0x3f,0x00,0x00},
  37          
  38                  {0x00,0x04,0x04,0xe4,0x24,0x24,0x25,0x26, /* 京 */
  39                   0x24,0x24,0x24,0xe4,0x06,0x04,0x00,0x00,
  40                   0x00,0x20,0x10,0x19,0x0D,0x41,0x81,0x7f,
  41                   0x01,0x01,0x05,0x0d,0x38,0x10,0x00,0x00},
  42          
  43                  {0x00,0x80,0x60,0xf8,0x07,0x0a,0x28,0x28, /* 伟 */
  44                   0x28,0xff,0x28,0x28,0x28,0x28,0x00,0x00,
  45                   0x01,0x00,0x00,0xfF,0x00,0x01,0x01,0x01,
  46                   0x01,0xff,0x01,0x21,0x41,0x3f,0x00,0x00},
  47          
  48                  {0x08,0x08,0x89,0xce,0x28,0x18,0x02,0x7a, /* 福 */
  49                   0x4a,0x4a,0x4a,0x4a,0x4a,0x7a,0x02,0x00,
  50                   0x02,0x01,0x00,0xff,0x01,0x02,0xff,0x49,
  51                   0x49,0x49,0x7f,0x49,0x49,0x49,0xff,0x00}};
  52          
  53          /* 1.写指令代码子程序(E1) */
  54          void WriteCommandE1()
  55          {
C51 COMPILER V6.02  B07                                                                    10/18/2005 09:28:08 PAGE 2   

  56   1        while(IN(CRADD1) & 0x80);
  57   1        OUT(CWADD1, Command);
  58   1      }
  59          
  60          /* 2.写显示数据子程序(E1) */
  61          void WriteDataE1()
  62          {
  63   1        while(IN(CRADD1) & 0x80);
  64   1        OUT(DWADD1, LCDData);
  65   1      }
  66          
  67          /* 3.读显示数据子程序(E1) */
  68          void ReadDataE1()
  69          {
  70   1        while(IN(CRADD1) & 0x80);
  71   1        LCDData = IN(DRADD1);
  72   1      }
  73          
  74          /* 4.写指令代码子程序(E2) */
  75          void WriteCommandE2()
  76          {
  77   1        while(IN(CRADD2) & 0x80);
  78   1        OUT(CWADD2, Command);
  79   1      }
  80          
  81          /* 5.写显示数据子程序(E2) */
  82          void WriteDataE2()
  83          {
  84   1        while(IN(CRADD2) & 0x80);
  85   1        OUT(DWADD2, LCDData);
  86   1      }
  87          
  88          /* 6.读显示数据子程序(E2) */
  89          void ReadDataE2()
  90          {
  91   1        while(IN(CRADD2) & 0x80);
  92   1        LCDData = IN(DRADD2);
  93   1      }
  94          
  95          /* 初始化程序 */
  96          void Init()
  97          {
  98   1        Command = 0xe2;
  99   1        WriteCommandE1();
 100   1        WriteCommandE2();
 101   1      
 102   1        Command = 0xa4;
 103   1        WriteCommandE1();
 104   1        WriteCommandE2();
 105   1      
 106   1        Command = 0xa9;
 107   1        WriteCommandE1();
 108   1        WriteCommandE2();
 109   1      
 110   1        Command = 0xa0;
 111   1        WriteCommandE1();
 112   1        WriteCommandE2();
 113   1      
 114   1        Command = 0xc0;
 115   1        WriteCommandE1();
 116   1        WriteCommandE2();
 117   1      
C51 COMPILER V6.02  B07                                                                    10/18/2005 09:28:08 PAGE 3   

 118   1        Command = 0xaf;
 119   1        WriteCommandE1();
 120   1        WriteCommandE2();
 121   1      }
 122          
 123          /* 清屏 */
 124          void Clear()
 125          {
 126   1        unsigned char i,j;
 127   1      
 128   1        i = 0;
 129   1        do {
 130   2      
 131   2          Command = (i + 0xb8);/* 页地址设置 */
 132   2          WriteCommandE1();
 133   2          WriteCommandE2();
 134   2      
 135   2          Command = 0x00;      /* 列地址设置为"0" */
 136   2          WriteCommandE1();
 137   2          WriteCommandE2();
 138   2      
 139   2          j = 0x50;            /* 一页清 80个字节 */
 140   2          do {
 141   3            LCDData = 0x00;    /* 显示数据为"0" */
 142   3            WriteDataE1();
 143   3            WriteDataE2();
 144   3          }while(--j !=0);     /* 页内字节清零循环 */
 145   2      
 146   2        }while(++i !=4);       /* 页地址暂存器加一 */
 147   1                               /* 显示区清零循环 */
 148   1      }
 149          
 150          /* 延时程序 */
 151          void Delay()
 152          {
 153   1        unsigned char i,j;
 154   1        i = 20;
 155   1        j = 0;
 156   1        do{
 157   2          do{
 158   3          }while(--j !=0);
 159   2        }while( --i != 0 );
 160   1      }
 161          
 162          /* 中文显示子程序 */
 163          void WriteCHN16x16()
 164          {
 165   1        unsigned char i,j,k;
 166   1      
 167   1        i = 0;
 168   1        j = 0;
 169   1        while(j<2) {
 170   2          Command = ((Page_ + j) & 0x03) | 0xb8;   /* 设置页地址 */
 171   2          WriteCommandE1();
 172   2          WriteCommandE2();
 173   2          k = Column;                    /* 列地址值 */
 174   2          while(k < Column + 16){
 175   3            if (k < PD1) {               /* 为左半屏显示区域(E1) */
 176   4              Command = k;
 177   4              WriteCommandE1();          /* 设置列地址值 */
 178   4              LCDData = CCTAB[Code_][i]; /* 取汉字字模数据 */
 179   4              WriteDataE1();             /* 写字模数据 */
C51 COMPILER V6.02  B07                                                                    10/18/2005 09:28:08 PAGE 4   

 180   4            } else{                      /* 为右半屏显示区域(E2) */
 181   4              Command = k-PD1;
 182   4              WriteCommandE2();          /* 设置列地址值 */
 183   4              LCDData = CCTAB[Code_][i]; /* 取汉字字模数据 */
 184   4              WriteDataE2();             /* 写字模数据 */
 185   4            };
 186   3      
 187   3            i++;
 188   3            if( ++k >= PD1 * 2) break;   /* 列地址是否超出显示范围 */
 189   3          } ;
 190   2          j++;
 191   2        };
 192   1      }
 193          
 194          /*  中文显示程序 */
 195          void main()
 196          {
 197   1        Init();
 198   1        Clear();
 199   1      
 200   1        Page_ = 0x02;
 201   1        Column = 0x00;
 202   1        Code_ = 0x00;
 203   1        WriteCHN16x16();
 204   1      
 205   1        Page_ = 0x02;
 206   1        Column = 0x10;
 207   1        Code_ = 0x01;
 208   1        WriteCHN16x16();
 209   1      
 210   1        Page_ = 0x02;
 211   1        Column = 0x20;
 212   1        Code_ = 0x02;
 213   1        WriteCHN16x16();
 214   1      
 215   1      
 216   1        Page_ = 0x02;
 217   1        Column = 0x30;
 218   1        Code_ = 0x03;
 219   1        WriteCHN16x16();
 220   1      
 221   1        while(1);
 222   1      
 223   1      }
*** ERROR C249 IN LINE 223 OF E:\C51\B07.C: 'DATA': SEGMENT TOO LARGE

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

⌨️ 快捷键说明

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