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

📄 test.lst

📁 T6369C控制器的图形液晶显示功能用于烟草的标签显示
💻 LST
字号:
C51 COMPILER V8.06   TEST                                                                  03/11/2007 21:30:29 PAGE 1   


C51 COMPILER V8.06, COMPILATION OF MODULE TEST
OBJECT MODULE PLACED IN test.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE test.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <intrins.h>   
   2          
   3          #include        "ZYEL0304.H"
   4          #include        "Matrix16.H"
   5          
   6          #define CMDADD XBYTE[0x6100]                  //写指令代码地
   7          #define DATAADD XBYTE[0x6000]                  //写数据通道地址
   8          
   9          unsigned char xdata bmp_info[1536];
  10          volatile unsigned char idata info_ln[30];
  11          
  12          #define LINEWIDTH 30                                            //行宽 30个字节
  13          #define LCM_ERR  1
  14          #define LCM_SUC  1
  15          
  16          uchar sta01(void)                       // 状态位STA1,STA0判断(读写指令和读写数据)
  17          {
  18   1              uchar i;
  19   1      
  20   1              for(i=10;i>0;i--)
  21   1              {
  22   2                      if((CMDADD & 0x03) == 0x03)
  23   2                      break;
  24   2              }
  25   1              return i; // 若返回零,说明错误
  26   1      }
  27          
  28          uchar sta2(void)                                // 状态位STA2判断
  29          {
  30   1              uchar i;
  31   1      
  32   1              for(i=10;i>0;i--)
  33   1              {
  34   2                      if((CMDADD & 0x04) == 0x04)
  35   2                      break;
  36   2              }
  37   1              return i; // 若返回零,说明错误
  38   1      }
  39          
  40          uchar sta3(void)                                // 状态位STA3判断
  41          {
  42   1              uchar i;
  43   1      
  44   1              for(i=10;i>0;i--)
  45   1              {
  46   2                      if((CMDADD & 0x08) == 0x08)
  47   2                      break;
  48   2              }
  49   1              return i; // 若返回零,说明错误
  50   1      }
  51          
  52          uchar sta6(void)                                // 状态位STA6判断
  53          {
  54   1              uchar i;
  55   1      
C51 COMPILER V8.06   TEST                                                                  03/11/2007 21:30:29 PAGE 2   

  56   1              for(i=10;i>0;i--)
  57   1              {
  58   2                      if((CMDADD & 0x40) == 0x40)
  59   2                      break;
  60   2              }
  61   1              return i; // 若返回零,说明错误
  62   1      }
  63          
  64          // 返回值
  65          uchar writecode(unsigned char com)             //写无参数指令
  66          {  
  67   1              uint ret;
  68   1              ret=sta01();
  69   1              if(ret==0)
  70   1                      return LCM_ERR;
  71   1              else
  72   1                      CMDADD=com;
  73   1              return LCM_SUC;
  74   1      }
  75          
  76          uchar write1byte(unsigned char dat1,unsigned char com)    //写单字节参数指令
  77          {  
  78   1              uint ret;
  79   1              ret=sta01();
  80   1              if(ret==0)
  81   1                      return LCM_ERR;
  82   1              else
  83   1                      DATAADD=dat1;
  84   1              ret=sta01();
  85   1      
  86   1              if(ret==0)
  87   1                      return LCM_ERR;
  88   1              else
  89   1                      CMDADD=com;
  90   1              return LCM_SUC;
  91   1      }
  92          
  93          uchar write2byte(unsigned char dat1,unsigned char dat2,unsigned char com)           //写双字节参数指令 
  94          {   
  95   1              uint ret;
  96   1              ret=sta01();
  97   1              if(ret==0)
  98   1                      return LCM_ERR;
  99   1              else
 100   1                      DATAADD=dat1;
 101   1      
 102   1              ret=sta01();
 103   1              if(ret==0)
 104   1                      return LCM_ERR;
 105   1              else
 106   1                 DATAADD=dat2;
 107   1      
 108   1              if(ret==0)
 109   1                      return LCM_ERR;
 110   1              else
 111   1                      CMDADD=com;
 112   1              return LCM_SUC;
 113   1      }
 114          
 115          uchar disp_ini(void)                            //显示屏初始化子程序
 116          {
 117   1              uint ret;
C51 COMPILER V8.06   TEST                                                                  03/11/2007 21:30:29 PAGE 3   

 118   1              ret=write2byte(0x00,0x00,0x40);         //设置显示区域首地址0000h
 119   1              ret=write2byte(0x10,0x00,0x41);         //设置文本显示的宽度,即一行所占的字节数(12864t,16个8X8点阵字符)
 120   1              ret=write2byte(0x00,0x08,0x42);         //设置图形显示区域首地址0800h,或为文本属性区域首地址
 121   1              ret=write2byte(LINEWIDTH,0x00,0x43);    //设置图形显示区域宽度,或为文本属性区域宽度
 122   1              ret=write2byte(LINEWIDTH,0x00,0x43);    //设置图形显示区域宽度,或为文本属性区域宽度
 123   1              ret=writecode(0xa7);                    //光标形状设置
 124   1              ret=writecode(0x9c);                    //显示开关设置,打开图形显示模式
 125   1              ret=writecode(0x80);                    //显示方式设置,逻辑或合成
 126   1              return ret;
 127   1      }
 128          
 129          uchar clearram(void)                            //清屏程序
 130          {   
 131   1              unsigned int  i;
 132   1              uint ret;
 133   1      
 134   1              ret=write2byte(0x00,0x00,0x24);         //设置显示ram首地址0000h
 135   1              ret=writecode(0xb0);                    //设置自动写方式
 136   1              for(i=8192;i>0;i--)                     //往显示区域写0;区域大小8k
 137   1              {
 138   2                 ret=sta3();
 139   2                 DATAADD=0;
 140   2              };
 141   1              ret=writecode(0xb2);                            //关闭自动写指令
 142   1              return ret;
 143   1              
 144   1      }
 145          
 146          uchar gshowNullword(unsigned char y,unsigned char x)    //图形方式下显示空内容
 147          //x--显示在第x(0~29)字符列,y--显示在第y(0~127)
 148          {
 149   1              unsigned int num,ret;
 150   1              unsigned char d1,d2,i=16;
 151   1              num=y*LINEWIDTH+x+0x800;                 //图形显示区首地址为0800h
 152   1         
 153   1              for(i=16;i>0;i--)
 154   1              {    
 155   2                      d1=num/256;                       //得到显示屏上汉字显示的相对位置
 156   2                      d2=num%256;
 157   2                      ret=write2byte(d2,d1,0x24);
 158   2                      ret=write1byte(0x00,0xc0);            //写汉字左代码
 159   2                      ret=write1byte(0x00,0xc0);                //写汉字右代码
 160   2                      num+=LINEWIDTH;                   //显示ram地址修正
 161   2              }
 162   1              return ret;
 163   1      }
 164          
 165          //显示16*16点阵汉字
 166          uchar gshowword(unsigned char y,unsigned char x,unsigned char *w_no) //图形方式下显示一个汉字字符(分为左

⌨️ 快捷键说明

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