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

📄 anyposition.lst

📁 51单片机开发与应用技术详解(珍藏版)PPT及源码
💻 LST
字号:
C51 COMPILER V8.08   ANYPOSITION                                                           04/04/2008 10:44:15 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE ANYPOSITION
OBJECT MODULE PLACED IN AnyPosition.OBJ
COMPILER INVOKED BY: C:\Program Files\keil\C51\BIN\C51.EXE AnyPosition.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>
   2          #include<stdio.h>
   3          
   4          unsigned data i;
   5          unsigned char q;
   6          unsigned char *p2,*pp;                           //建立数组指针
   7          unsigned char wbyte;
   8          unsigned char Column;                           //定义列
   9          unsigned char Page;                                     //定义页
  10          
  11          sbit E=P3^2;                                    //读写使能信号,1有效
  12          sbit R_W=P3^1;                          //读写选择信号;1为读选通,0为写选通
  13          sbit RS=P3^0;
  14          sbit D_I=P3^0;                                  //数据指令选择信号;1为数据操作,0为写指令或读状态
  15          
  16          unsigned char data j;
  17          unsigned char data k;           
  18          
  19          /********************扩充指令集画图********************/
  20          unsigned char data z;//图形数组的页,为实际点阵行数
  21          unsigned char data y;//图形数组的列,为实际点阵列数除以8
  22          unsigned char data Column;//起始点设定:为在液晶中显示的实际起始列
  23          unsigned char data Page;//起始点设定:为在液晶中显示的实际起始行
  24          
  25          
  26          char code MyTu2[32][4]=  /*图形数组,演示图形的任意位置显示*/
  27          {
  28          0xAA,0x8A,0xE8,0xAA,0x00,0x5D,0xFC,0x00,0x2A,0xFB,0xBF,0xAA,0x01,0x51,0x15,0x40,
  29          0xAF,0xBF,0xFA,0xEA,0x05,0xDD,0x5D,0xD0,0x2E,0xF8,0x0F,0xBA,0x15,0x40,0x01,0x14,
  30          0xBF,0x8E,0x00,0xFE,0x75,0x05,0x00,0x54,0x3A,0x03,0x00,0x6E,0x74,0x00,0x00,0x17,
  31          0xFE,0x02,0xBE,0x3F,0x44,0x01,0xC4,0x15,0xEC,0x0F,0x82,0x3B,0x74,0x01,0x07,0x17,
  32          0xFC,0x3B,0x8E,0x3F,0x54,0x41,0x5C,0x15,0xEC,0x63,0xA8,0x3B,0x54,0x11,0x00,0x17,
  33          0xEE,0x0A,0x00,0x2F,0x54,0x01,0x00,0x57,0x3B,0x03,0x02,0x7E,0x11,0x01,0x00,0x54,
  34          0xBB,0xC3,0x81,0xFE,0x1D,0xC0,0x05,0xDC,0x2E,0xFA,0x2F,0xBA,0x07,0x77,0x75,0x70,
  35          0xAB,0xEB,0xFB,0xEA,0x01,0xD7,0x55,0xC0,0x2A,0xBF,0xFF,0xAA,0x00,0x17,0x74,0x00,
  36          };
  37          
  38          void WCOM(unsigned char d)                      //写指令程序
  39          {
  40   1       R_W=1;
  41   1       D_I=0;                                         //设置状态
  42   1      Loop:
  43   1       P1=0xFF;
  44   1       E=1;                                           //使能有效
  45   1       q=P1;                                          //将p1口状态读入
  46   1       E=0;                                           //关闭使能信号
  47   1       if(q&0x80)                                     //判断屏幕是否忙
  48   1       {
  49   2       goto Loop;                                     //若忙,循环等待
  50   2       }
  51   1       R_W=0;
  52   1       D_I=0;                                         //写数据指令
  53   1       P1=d;                                          //将数据送入p1口
  54   1       E=1;                                           //使能信号开
  55   1       E=0;                                           //使能信号关
C51 COMPILER V8.08   ANYPOSITION                                                           04/04/2008 10:44:15 PAGE 2   

  56   1      }
  57          
  58          void Dat(unsigned char d)
  59          {
  60   1       R_W=1;
  61   1       D_I=0;                                         //读状态指令
  62   1      Loop:
  63   1       P1=0xFF;
  64   1       E=1;                                           //使能
  65   1       q=P1;
  66   1       E=0;
  67   1       if(q&0x80)
  68   1       {
  69   2       goto Loop;
  70   2       }                                                      //判忙
  71   1       D_I=1;                                         //送数据指令
  72   1       R_W=0;
  73   1       P1=d;
  74   1       E=1;                                           //使能信号开
  75   1       E=0;                                           //使能信号关
  76   1      }
  77          
  78          void Clearlcd()
  79          {
  80   1       D_I=0;
  81   1       R_W=0;
  82   1       P1=0x01;
  83   1       WCOM(0x01);                                    //清除显示
  84   1      }
  85          
  86          void Imim()
  87          {
  88   1       P0=0xff;
  89   1       P1=0xff;
  90   1       P2=0xff;
  91   1       P3=0xff;
  92   1       E=0;
  93   1      WCOM(0x38);                                     //功能设定
  94   1       WCOM(0x08);                                    //关显示指令
  95   1       WCOM(0x06);                                    //游标右移
  96   1       Clearlcd();                                    //清屏
  97   1       WCOM(0x0c);                                    //开显示指令
  98   1      }
  99          
 100          
 101          
 102          void Tuxing()
 103          {
 104   1       unsigned char data v;
 105   1       unsigned char data w;
 106   1       unsigned char data x;
 107   1       unsigned char data h;
 108   1       WCOM(0x34);                                    //功能设定
 109   1       WCOM(0x36);                                    //扩充功能设定
 110   1       pp=p2;
 111   1       pp=pp+16*y*2;
 112   1       for(h=0;h<z/2;h++)                     //页循环
 113   1       {
 114   2        v=Column|0x80;
 115   2        w=Page|0x80;
 116   2        WCOM(w);                                      //送入起始页地址
 117   2        WCOM(v);                                      //送入起始列地址
C51 COMPILER V8.08   ANYPOSITION                                                           04/04/2008 10:44:15 PAGE 3   

 118   2        Page++;                                       //准备对下一页进行操作
 119   2        for(x=0;x<2*y;x++)                    //列循环
 120   2         {
 121   3          if(x<y)
 122   3          {
 123   4           wbyte=*p2;
 124   4           Dat(wbyte);                                //循环送入图形数据
 125   4           p2=p2+1;
 126   4          }
 127   3          else
 128   3           {
 129   4            wbyte=*pp;
 130   4            Dat(wbyte);                               //循环送入图形数据
 131   4            pp=pp+1;
 132   4           }
 133   3         }
 134   2        }
 135   1      }
 136          
 137          void OneTuxing()
 138          {
 139   1       unsigned char data v;
 140   1       unsigned char data w;
 141   1       unsigned char data x;
 142   1       unsigned char data h;
 143   1       WCOM(0x34);                                    //功能设定
 144   1       WCOM(0x36);                                    //扩充功能设定
 145   1       for(h=0;h<z;h++)                               //页循环
 146   1       {
 147   2        v=Column|0x80;
 148   2        w=Page|0x80;
 149   2        WCOM(w);                                      //送入起始页地址
 150   2        WCOM(v);                                      //送入起始列地址
 151   2        Page++;                                       //准备对下一页进行操作
 152   2        for(x=0;x<y;x++)                              //列循环
 153   2         {
 154   3          wbyte=*p2;
 155   3          Dat(wbyte);                         //循环送入图形数据
 156   3          p2++;
 157   3         }
 158   2       }
 159   1      }
 160          
 161          
 162          void Clearlcd1()
 163          {
 164   1        unsigned char data Disp_Page;
 165   1        unsigned char data i;
 166   1        unsigned char data j;
 167   1        for(i=0;i<64;i++)                             //共32页
 168   1        {
 169   2         Disp_Page=i|0x80;                    //设置页地址
 170   2         WCOM(Disp_Page);                     //送入页地址
 171   2         WCOM(0x80);                          //送入起始列地址
 172   2         for(j=0;j<32;j++)
 173   2         {
 174   3          Dat(0x00);                                  //清屏
 175   3         }
 176   2        }
 177   1      }
 178          
 179          
C51 COMPILER V8.08   ANYPOSITION                                                           04/04/2008 10:44:15 PAGE 4   

 180          /********************主程序********************/
 181          void main()
 182          {
 183   1       Imim();                                                //初始化
 184   1       Clearlcd1();                                   //扩充指令集清屏
 185   1      
 186   1       z=32;                                          //图形数组的页,为实际点阵行数
 187   1       y=4;                                           //图形数组的列,为实际点阵列数除以8
 188   1       Column=5;                                      //起始点设定:为在液晶中显示的实际起始列,一列占一个汉字
 189   1       Page=0;                                                //起始点设定:为在液晶中显示的实际起始行
 190   1       p2=MyTu2;
*** WARNING C182 IN LINE 190 OF ANYPOSITION.C: pointer to different objects
 191   1       OneTuxing();                           //显示一个小的图标
 192   1       while(1)
 193   1      {
 194   2      }
 195   1      }
 196          
 197          
 198          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    391    ----
   CONSTANT SIZE    =    128    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     16       2
   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 + -