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

📄 ocm12864.lst

📁 proteus实例集锦
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V8.08   OCM12864                                                              07/23/2007 08:17:44 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE OCM12864
OBJECT MODULE PLACED IN OCM12864.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE OCM12864.c LARGE BROWSE DEBUG OBJECTEXTEND CODE

line level    source

   1          
   2          #include <at89x52.h>
   3          #include <stdio.h>
   4          #include <absacc.h>
   5          #include <intrins.h>
   6          #include <ocm12864.h>
   7          #include <lcd_code.h>
   8          #include <xbyte.h>
   9          
  10          #define disp_off   0x3e
  11          #define disp_on    0x3f
  12          #define disp_x     0xb8
  13          #define disp_z     0xc0
  14          #define disp_y     0x40
  15          #define comm       0
  16          #define dat        1
  17          #define data_ora   XBYTE[0x8000]      //MCU P1<------> LCM
  18          
  19          sbit di = P1^2; //Data or Instrument Select,H:写数据,L:写指令
  20          sbit rw = P1^1;  //Write or Read,H:read,L:write
  21          sbit e  = P1^0;  //读写使能
  22          
  23          //sbit bf = P0^7;
  24          //sbit res= P0^4;
  25          
  26          
  27          
  28          //void chk_busy (void);
  29          void clrscr();
  30          void delay (uchar us)
  31          {
  32   1        while(us--);
  33   1      }
  34          /*--------------写LCD----------*/
  35          void wr_lcd (uchar dat_comm,uchar content)
  36          {
  37   1        //chk_busy ();
  38   1        COM8255=0x80;                           //PA输出,PB输出
  39   1        if (dat_comm==1)            //di=dat_comm;    //DI=PB5
  40   1         {
  41   2           PB8255=0x2f;              //di=1  rw=0  e=1
  42   2               data_ora=content; 
  43   2               PB8255=0x6f;
  44   2               ;
  45   2               ;
  46   2               PB8255=0X2f;
  47   2              }
  48   1        else 
  49   1          { 
  50   2            PB8255=0x0f;                    //di=0 rw=0 e=1   //RW=PB4
  51   2            data_ora=content;  
  52   2            PB8255=0x4f;                           //e=1;                     //e=PB6
  53   2                ;
  54   2            ;
  55   2            PB8255&=0x0f;               //e=0;
C51 COMPILER V8.08   OCM12864                                                              07/23/2007 08:17:44 PAGE 2   

  56   2              }
  57   1        
  58   1      }  
  59          /*void chk_busy (void)
  60          {
  61            data_ora=0xff;
  62            di=0;
  63            rw=1;
  64            ;
  65            e=1;
  66           // while(bf||res==1);
  67            e=0;
  68          }
  69          
  70          /*--------------读LCD数据---------------
  71          uchar rd_lcd ()
  72          {
  73            uchar rddata;
  74            chk_busy ();
  75            di=1;
  76            rw=1;
  77            e=1;
  78            ;
  79            rddata=data_ora;
  80            e=0;
  81            return rddata;
  82          } */
  83          
  84          /*--------------写点阵------------------*/
  85          void lat_disp (uchar data1)
  86          {
  87   1        uchar i,j;
  88   1        cs1=1;cs2=1;
  89   1        wr_lcd (comm,disp_on);
  90   1        for(j=0;j<8;j++)
  91   1        {
  92   2          wr_lcd (comm,disp_x+j);
  93   2          //wr_lcd (comm,disp_z);
  94   2          wr_lcd (comm,disp_y);
  95   2          for(i=0;i<64;i++)
  96   2          {
  97   3            wr_lcd (dat,data1);
  98   3          //  wr_lcd (dat,data2);
  99   3          }
 100   2        }
 101   1      }
 102           /*--------------显示图片----------------
 103          void img_disp (uchar code *img,uchar l,uchar r)
 104          {
 105            uchar i,j;
 106            for(j=0;j<8;j++)
 107            {     
 108              cs1=l;cs2=r;
 109              wr_lcd (comm,disp_on);
 110              wr_lcd (comm,disp_x+j);
 111              wr_lcd (comm,disp_z);
 112              wr_lcd (comm,disp_y);
 113              for(i=0;i<64;i++)
 114                wr_lcd (dat,img[j*64+i]);
 115                      
 116             
 117            }
C51 COMPILER V8.08   OCM12864                                                              07/23/2007 08:17:44 PAGE 3   

 118          } */
 119          
 120          /*---------------指定位置(x,y)显示row_xl行(每行row_yl个)汉字(大小xl*yl)--------------*/            
 121          
 122          void chn_disp (uchar x,uchar y,uchar xl,uchar yl,uchar row_xl,uchar row_yl,uchar code *chn)
 123          {
 124   1        uchar i,j,k,l,a;
 125   1        wr_lcd (comm,disp_on);
 126   1        for(l=0;l<row_xl;l++)
 127   1        {
 128   2          for(k=0;k<row_yl;k++)
 129   2          {
 130   3            for(j=0;j<xl;j++)
 131   3            {
 132   4              wr_lcd (comm,disp_x+x+l*xl+j);
 133   4              //wr_lcd (comm,disp_z);
 134   4              wr_lcd (comm,disp_y+y+k*yl);
 135   4              a=l*xl*yl*row_yl+k*xl*yl+j*yl;
 136   4              for(i=0;i<yl;i++)
 137   4                wr_lcd (dat,chn[a+i]);
 138   4            }
 139   3          }
 140   2        }
 141   1      } 
 142          /*------------------初始化-----------------*/
 143          void init_lcd (void)
 144          {
 145   1        delay(20);
 146   1        cs1=1;
 147   1        cs2=1;
 148   1        //wr_lcd (comm,disp_off);
 149   1        wr_lcd (comm,disp_on);
 150   1      }
 151          /*---------------清屏-----------------*/
 152          void clrscr()
 153          {
 154   1        lat_disp(0x00);
 155   1      }
 156          /*-----------------反白方式显示汉字------------------*/
 157          void chn_fdisp (uchar x,uchar y,uchar xl,uchar yl,uchar row_xl,uchar row_yl,uchar code *chn)
 158          {
 159   1        uchar i,j,k,l,a;
 160   1        wr_lcd (comm,disp_on);
 161   1        for(l=0;l<row_xl;l++)
 162   1        {
 163   2          for(k=0;k<row_yl;k++)
 164   2          {
 165   3            for(j=0;j<xl;j++)
 166   3            {
 167   4              wr_lcd (comm,disp_x+x+l*xl+j);
 168   4              //wr_lcd (comm,disp_z);
 169   4              wr_lcd (comm,disp_y+y+k*yl);
 170   4              a=l*xl*yl*row_yl+k*xl*yl+j*yl;
 171   4              for(i=0;i<yl;i++)
 172   4                wr_lcd (dat,~chn[a+i]);
 173   4            }
 174   3          }
 175   2        }
 176   1      }
 177          /*-------- 在 CS屏上(X ,Y )位置显示数字 Num----------*/  
 178          void num_disp(bit cs,uchar x,uchar y,uchar Num)
 179          { 
C51 COMPILER V8.08   OCM12864                                                              07/23/2007 08:17:44 PAGE 4   

 180   1         cs1=cs;
 181   1         cs2=~cs;
 182   1         switch(Num)
 183   1                  { 
 184   2                        case 0: { chn_disp(x,y,2,8,1,1,hz_zero); }     break; 
 185   2                        case 1: { chn_disp(x,y,2,8,1,1,hz_one); }      break;   
 186   2                        case 2: { chn_disp(x,y,2,8,1,1,hz_two); }      break;
 187   2                        case 3: { chn_disp(x,y,2,8,1,1,hz_three);}     break;
 188   2                        case 4: { chn_disp(x,y,2,8,1,1,hz_four);}      break;
 189   2                        case 5: { chn_disp(x,y,2,8,1,1,hz_five);}      break;
 190   2                        case 6: { chn_disp(x,y,2,8,1,1,hz_six);}       break;
 191   2                        case 7: { chn_disp(x,y,2,8,1,1,hz_seven);}     break;
 192   2                        case 8: { chn_disp(x,y,2,8,1,1,hz_eight);}     break;
 193   2                        case 9: { chn_disp(x,y,2,8,1,1,hz_nine);}      break; 
 194   2                        case 10: { chn_disp(x,y,2,8,1,1,hz_A);}        break;
 195   2                        case 11: { chn_disp(x,y,2,8,1,1,hz_B);}        break;
 196   2                        case 12: { chn_disp(x,y,2,8,1,1,hz_C);}        break;
 197   2                        case 13: { chn_disp(x,y,2,8,1,1,hz_D);}        break;
 198   2                        case 14: { chn_disp(x,y,2,8,1,1,hz_E);}        break;
 199   2                        case 15: { chn_disp(x,y,2,8,1,1,hz_F);}        break;                   
 200   2                       }
 201   1      } 
C51 COMPILER V8.08   OCM12864                                                              07/23/2007 08:17:44 PAGE 5   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION _delay (BEGIN)
                                           ; SOURCE LINE # 30
;---- Variable 'us' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 31
0000         ?C0001:
                                           ; SOURCE LINE # 32
0000 AE07              MOV     R6,AR7
0002 1F                DEC     R7
0003 EE                MOV     A,R6
0004 70FA              JNZ     ?C0001
                                           ; SOURCE LINE # 33
0006         ?C0003:
0006 22                RET     
             ; FUNCTION _delay (END)

             ; FUNCTION L?0077 (BEGIN)
0000 E9                MOV     A,R1
0001 8FF0              MOV     B,R7
0003 A4                MUL     AB
0004 FF                MOV     R7,A
0005 E0                MOVX    A,@DPTR
0006 24B8              ADD     A,#0B8H
0008 2F                ADD     A,R7
0009 2C                ADD     A,R4
000A FD                MOV     R5,A
000B E4                CLR     A
000C FF                MOV     R7,A
             ; FUNCTION _wr_lcd (BEGIN)
                                           ; SOURCE LINE # 35
;---- Variable 'content' assigned to Register 'R5' ----
;---- Variable 'dat_comm' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 36
                                           ; SOURCE LINE # 38
000D 908003            MOV     DPTR,#08003H
0010 7480              MOV     A,#080H
0012 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 39
0013 EF                MOV     A,R7
0014 908001            MOV     DPTR,#08001H
0017 B40110            CJNE    A,#01H,?C0004
                                           ; SOURCE LINE # 40
                                           ; SOURCE LINE # 41
001A 742F              MOV     A,#02FH
001C F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 42
001D 908000            MOV     DPTR,#08000H
0020 ED                MOV     A,R5
0021 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 43
0022 A3                INC     DPTR
0023 746F              MOV     A,#06FH
0025 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 46
0026 742F              MOV     A,#02FH
0028 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 47
0029 22                RET     
002A         ?C0004:
                                           ; SOURCE LINE # 49
C51 COMPILER V8.08   OCM12864                                                              07/23/2007 08:17:44 PAGE 6   

                                           ; SOURCE LINE # 50
002A 740F              MOV     A,#0FH
002C F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 51
002D 908000            MOV     DPTR,#08000H
0030 ED                MOV     A,R5
0031 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 52
0032 A3                INC     DPTR
0033 744F              MOV     A,#04FH
0035 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 55
0036 E0                MOVX    A,@DPTR
0037 540F              ANL     A,#0FH
0039 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 56
                                           ; SOURCE LINE # 58
003A         ?C0006:

⌨️ 快捷键说明

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