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

📄 main.lst

📁 12864 C程序,希望对大家有用
💻 LST
字号:
C51 COMPILER V7.20   MAIN                                                                  12/08/2004 10:06:47 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg51.h>
   2          #include<stdio.h>
   3          #include<stdlib.h> 
   4          #include<intrins.h>
   5          #include<absacc.h>
   6          
   7          #define busy 0x80 //用于检测LCD状态字中的Busy标识
   8          #define RSaddr 0x1000
   9          #define RWaddr 0x2000
  10          #define CSaddr 0x0400
  11          #define adtn   0xc8ff
  12          
  13          #define wc 0xcfff
  14          #define wd 0xdfff
  15          #define rc 0xefff
  16          
  17          unsigned char code homepage[] = {"www.ispdown.com"};
  18          unsigned char code email[] = {"ispdown@21cn.com"};
  19          
  20          //5ms延时
  21          void delay5ms(void)
  22            {
  23   1              unsigned int TempCyc = 5552;
  24   1              while(TempCyc--);
  25   1        }
  26          //----------------------------------
  27          //400ms延时
  28          void delay400ms(void)
  29            {
  30   1              unsigned char TempCycA = 5;
  31   1              unsigned int TempCycB;
  32   1              while(TempCycA--)
  33   1              {
  34   2                TempCycB=7269;
  35   2                while(TempCycB--);
  36   2              };
  37   1        }
  38          //--------------------------------
  39          void waitLcd()
  40            {
  41   1          char temp;
  42   1              bit flag=1;
  43   1              while(flag==1)
  44   1          {
  45   2            //temp=XBYTE[CSaddr+RWaddr+adtn];
  46   2                temp=XBYTE[rc];
  47   2                if (temp>>7==0) flag=0;
  48   2                P1=temp;
  49   2              }
  50   1              P1=0xff;
  51   1        }
  52          //---------------------------------
  53          void WC_Lcd(bit isCheck,char c)
  54            {
  55   1         if (isCheck==1) waitLcd();
C51 COMPILER V7.20   MAIN                                                                  12/08/2004 10:06:47 PAGE 2   

  56   1         //XBYTE[CSaddr+adtn]=c;
  57   1         XBYTE[wc]=c;
  58   1        }
  59          
  60          //--------------------------------
  61          void WD_Lcd(char c)
  62            {
  63   1          waitLcd();
  64   1              //XBYTE[CSaddr+RSaddr+adtn]=c;
  65   1              XBYTE[wd]=c;
  66   1        }
  67          
  68          //----------------------------------
  69          void LcdInit()
  70            {
  71   1          delay5ms();
  72   1              delay5ms();
  73   1              delay5ms();
  74   1              WC_Lcd(0,0x38); //三次显示模式设置,不检测忙信号
  75   1              delay5ms();
  76   1              WC_Lcd(0,0x38);
  77   1              delay5ms(); 
  78   1              WC_Lcd(0,0x38);
  79   1              delay5ms();
  80   1      
  81   1              WC_Lcd(1,0x38); //显示模式设置,开始要求每次检测忙信号
  82   1              WC_Lcd(1,0x08); //关闭显示
  83   1              WC_Lcd(1,0x01); //显示清屏
  84   1              WC_Lcd(1,0x06); // 显示光标移动设置
  85   1              WC_Lcd(1,0x0C); // 显示开及光标设置
  86   1        }     
  87          //-------------------------------------------------------------------------
  88          //按指定位置显示一个字符
  89          void displayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
  90            {
  91   1              Y &= 0x1;
  92   1              X &= 0xF; //限制X不能大于15,Y不能大于1
  93   1              if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;
  94   1              X |= 0x80; //算出指令码
  95   1              WC_Lcd(0,X); //这里不检测忙信号,发送地址码
  96   1              WD_Lcd(DData);
  97   1      }
  98          //-------------------------------------------------------------------------------
  99          //按指定位置显示一串字符
 100          void displayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
 101            {
 102   1              unsigned char ListLength;
 103   1      
 104   1              ListLength = 0;
 105   1              Y &= 0x1;
 106   1              X &= 0xF; //限制X不能大于15,Y不能大于1
 107   1              while (DData[ListLength]>0x20) //若到达字串尾则退出
 108   1              {
 109   2                if (X <= 0xF) //X坐标应小于0xF
 110   2                {
 111   3                  displayOneChar(X, Y, DData[ListLength]); //显示单个字符
 112   3                      ListLength++;
 113   3                      X++;
 114   3                }
 115   2              }
 116   1        }
 117          //====================================
C51 COMPILER V7.20   MAIN                                                                  12/08/2004 10:06:47 PAGE 3   

 118          void main(void)
 119          {
 120   1              delay400ms();
 121   1              LcdInit();
 122   1      
 123   1              displayListChar(0, 0, homepage);
 124   1              displayListChar(0, 1, email);
 125   1      
 126   1              while(1);
 127   1        }
 128          //====================================
 129          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    271    ----
   CONSTANT SIZE    =     33    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       4
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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