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

📄 1602.lst

📁 用C语言编写的HD44780液晶显示器驱动底层源程序
💻 LST
字号:
C51 COMPILER V6.23a  1602                                                                  08/25/2005 18:17:12 PAGE 1   


C51 COMPILER V6.23a, COMPILATION OF MODULE 1602
OBJECT MODULE PLACED IN E:\MCS51\ZHAOM\COMPANY\HD44780\1602.OBJ
COMPILER INVOKED BY: C:\wave6000\keil\C51\BIN\C51.EXE E:\MCS51\ZHAOM\COMPANY\HD44780\1602.C DB SB OE OT(2) 

stmt level    source

   1          #include<reg51.h>
   2          #include<stdio.h>
   3          #define uchar unsigned char
   4          uchar *p,*p1;/*建立数组指针*/
   5          uchar q;/*判忙*/
   6          uchar data i;
   7          uchar data wbyte;
   8          sbit E=P3^4;/*读写使能信号,1有效*/
   9          sbit R_W=P3^3;/*读写选择信号;1为读选通,0为写选通*/
  10          sbit RS=P3^2;
  11          sbit D_I=P3^2;/*数据指令选择信号;1为数据操作,0为写指令或读状态*/
  12          char code Hanzi[16]=  /*汉字数组*/
  13          {
  14           0x03,0x13,
  15           0x23,0x33,
  16           0x43,0x53,
  17           0x63,0x73,
  18           0x83,0x93,
  19           0xa3,0xb3,
  20           0xc3,0xd3,
  21           0xe3,0xf3,
  22          };
  23          char code Hanzi1[12]=  /*汉字数组*/
  24          {
  25           0x14,0x24,
  26           0x34,0x44,
  27           0x54,0x64,
  28           0x74,0x84,
  29           0x94,0xa4,
  30           0xb4,0xc4,
  31          };
  32          uchar data j=16;/*所建立的第一个汉字数组中元素的个数*/
  33          /*为在液晶中第一行得显示数据*/
  34          uchar data j1=12;/*所建立的第二个汉字数组中元素的个数*/
  35          /*为在液晶中第二行得显示数据*/
  36          /**************************************************/
  37          void WCom(uchar);/*写指令*/
  38          void Clearlcd();/*清屏*/
  39          void Imim();/*初始化*/
  40          void Dat(uchar);/*送数据*/
  41          void Delay();/*延时*/
  42          void Hanz();/*写第一行汉字*/
  43          void Hanz1();/*写第二行汉字*/
  44          /********************主程序********************/
  45          void main()
  46          {
  47   1       Delay();/*延时*/
  48   1       Imim();/*初始化*/
  49   1       p=Hanzi;/*指针指向数组的首地址*/
  50   1       p1=Hanzi1;
  51   1       Hanz();/*写第一行汉字程序*/
  52   1       Hanz1();/*写第二行汉字程序*/
  53   1       loop:goto loop;
  54   1       }
  55          
C51 COMPILER V6.23a  1602                                                                  08/25/2005 18:17:12 PAGE 2   

  56          /********************写指令子程序********************/
  57          void WCOM(uchar d)    /*写指令程序*/
  58          {
  59   1       R_W=1;
  60   1       D_I=0;/*设置状态*/
  61   1      Loop:
  62   1       P1=0xFF;
  63   1       E=1;/*使能有效*/
  64   1       q=P1;/*将p1口状态读入*/
  65   1       E=0;/*关闭使能信号*/
  66   1       if(q&0x80)/*判断屏幕是否忙*/
  67   1       {
  68   2       goto Loop;/*若忙,循环等待*/
  69   2       }
  70   1       R_W=0;
  71   1       D_I=0;/*写数据指令*/
  72   1       P1=d;/*将数据送入p1口*/
  73   1       E=1;/*使能信号开*/
  74   1       E=0;/*使能信号关*/
  75   1      }
  76          /********************送数据子程序********************/
  77          void Dat(uchar d)
  78          {
  79   1       R_W=1;
  80   1       D_I=0;/*读状态指令*/
  81   1      Loop:
  82   1       P1=0xFF;
  83   1       E=1;/*使能*/
  84   1       q=P1;
  85   1       E=0;
  86   1       if(q&0x80)
  87   1       {
  88   2       goto Loop;
  89   2       }/*判忙*/
  90   1       D_I=1;/*送数据指令*/
  91   1       R_W=0;
  92   1       P1=d;
  93   1       E=1;/*使能信号开*/
  94   1       E=0;/*使能信号关*/
  95   1      }
  96          /********************初始化子程序********************/
  97          void Imim()
  98          {
  99   1       P0=0xff;
 100   1       P1=0xff;
 101   1       P2=0xff;
 102   1       P3=0xff;
 103   1       E=0;
 104   1       Delay();
 105   1       WCOM(0x3f);/*功能设定*/
 106   1       WCOM(0x08);/*关显示指令*/
 107   1       WCOM(0x06);/*游标右移*/
 108   1       Clearlcd();/*清屏*/
 109   1       WCOM(0x0f);/*开显示指令*/
 110   1      }
 111          /********************延时子程序********************/
 112          void Delay()
 113          {
 114   1       uchar data i,j;
 115   1       for(i=0;i<255;i++)
 116   1        for(j=0;j<255;j++);
 117   1      }
C51 COMPILER V6.23a  1602                                                                  08/25/2005 18:17:12 PAGE 3   

 118          /********************基本指令集清屏子程序********************/
 119          void Clearlcd()
 120          {
 121   1       D_I=0;
 122   1       R_W=0;
 123   1       WCOM(0x01);/*清除显示*/
 124   1      }
 125          /********************写第一行汉字主程序********************/
 126          void Hanz()
 127          {
 128   1       WCOM(0x80);/*第一行首地址设定*/
 129   1       for(i=0;i<j;i++,p++)
 130   1       {
 131   2        wbyte=*p;
 132   2        Dat(wbyte);/*将汉字数组数据送入*/
 133   2       }
 134   1      }
 135          /********************写第二行汉字主程序********************/
 136          void Hanz1()
 137          {
 138   1        WCOM(0xc1);/*第二行首地址设定*/
 139   1        for(i=0;i<j1;i++,p1++)
 140   1       {
 141   2        wbyte=*p1;
 142   2        Dat(wbyte);/*将汉字数组数据送入*/
 143   2       }
 144   1      }
C51 COMPILER V6.23a  1602                                                                  08/25/2005 18:17:12 PAGE 4   

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


P0 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0080H  1
P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
P2 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A0H  1
P3 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
T0 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B4H  1
AC . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D6H  1
T1 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B5H  1
EA . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00AFH  1
R_W. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B3H  1
Imim . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
size_t . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_INT    -----  2
Hanz . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
RD . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B7H  1
_WCOM. . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  d. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  Loop . . . . . . . . . . . . . . . .  LABEL    CODE   LABEL    -----  -----
ES . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00ACH  1
j1 . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0000H  1
RI . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0098H  1
INT0 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B2H  1
CY . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D7H  1
TI . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0099H  1
INT1 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B3H  1
Clearlcd . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
p1 . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   PTR      0001H  3
PS . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00BCH  1
RS . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B2H  1
OV . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D2H  1
main . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  loop . . . . . . . . . . . . . . . .  LABEL    CODE   LABEL    -----  -----
WR . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B6H  1
Hanzi1 . . . . . . . . . . . . . . . .  PUBLIC   CODE   ARRAY    0010H  12
wbyte. . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0004H  1
IE0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0089H  1
IE1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008BH  1
Hanz1. . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
E. . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B4H  1
ET0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A9H  1
ET1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00ABH  1
TF0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008DH  1
TF1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008FH  1
RB8. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009AH  1
EX0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A8H  1
IT0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0088H  1
TB8. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009BH  1
EX1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00AAH  1
IT1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008AH  1
P. . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D0H  1
SM0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009FH  1
SM1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009EH  1
SM2. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009DH  1
PT0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B9H  1
PT1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00BBH  1
RS0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D3H  1
TR0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008CH  1
RS1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D4H  1
TR1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008EH  1
C51 COMPILER V6.23a  1602                                                                  08/25/2005 18:17:12 PAGE 5   

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


PX0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B8H  1
PX1. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00BAH  1
REN. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      009CH  1
i. . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0005H  1
j. . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0006H  1
D_I. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B2H  1
RXD. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B0H  1
p. . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   PTR      0007H  3
q. . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   000AH  1
TXD. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B1H  1
Delay. . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  j. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0001H  1
F0 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D5H  1
_Dat . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  d. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  Loop . . . . . . . . . . . . . . . .  LABEL    CODE   LABEL    -----  -----
Hanzi. . . . . . . . . . . . . . . . .  PUBLIC   CODE   ARRAY    0000H  16


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    281    ----
   CONSTANT SIZE    =     28    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     11       4
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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