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

📄 text2.lst

📁 AT89C52单片机LED显示24小时时钟
💻 LST
字号:
C51 COMPILER V6.12  TEXT2                                                                  04/10/2009 21:44:22 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE TEXT2
OBJECT MODULE PLACED IN .\Text2.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\Text2.c DEBUG OBJECTEXTEND

stmt level    source

   1          #include "AT89X51.H"
   2          #define Ddata P2
   3          sbit RS=P0^5;
   4          sbit RW=P0^6;
   5          sbit LCDE=P0^7;
   6          //1PIN--GND  2PIN--VCC  3PIN--VO  4PIN--RS  5PIN--RW  6PIN--E  7-14PIN--DB0-DB7  15PIN--A  16PIN--K
   7          unsigned char hour=12,min=0,sec=0;
   8          unsigned int count=0;
   9          unsigned char line1[16]={"www.gliet.edu.cn"};
  10          unsigned char line2[16]={"Gui Lin 12:00:00"};
  11          unsigned char tab[]={'0','1','2','3','4','5','6','7','8','9'};
  12          void delay5ms()
  13          {unsigned  int i;
  14   1      for (i=0;i<1000;i++);
  15   1      }
  16          void delay50us()
  17          {register int i;
  18   1      for (i=0;i<20;i++);
  19   1      }
  20          void delay()
  21          {unsigned char m,n;
  22   1      for(m=255;m>0;m--)
  23   1      for(n=255;n>0;n--);}
  24          wr_com(unsigned char comm)//********写控制字符程序 E=1 RS=0 RW=0**********//
  25          {                        
  26   1        LCDE=0;
  27   1        RS=0;             //********RS寄存器选择输入端,当RS=0;当进行写模块操作,指向指令寄存器。
  28   1        RW=0;             //********当RS=1,无论是读操作还是写操作,都是指向数据寄存器。
  29   1        LCDE=1;
  30   1        Ddata=comm;
  31   1        RS=0;
  32   1        RW=0;
  33   1        LCDE=0;
  34   1      }
  35          wr_data(unsigned char dat)//*****当前位置写字符子程序:E=1 RS=1 RW=0
  36          {
  37   1        LCDE=0;
  38   1        RS=0;             //********RS寄存器选择输入端,当RS=0;当进行写模块操作,指向指令寄存器。
  39   1        RW=0;             //********当RS=1,无论是读操作还是写操作,都是指向数据寄存器。
  40   1        RS=1;
  41   1        RW=0;
  42   1        LCDE=1;
  43   1        Ddata=dat;
  44   1          LCDE=0;
  45   1        RS=0;
  46   1        RW=0;
  47   1      }
  48          
  49          unsigned char busycheck()//*****忙状态检查*******//
  50          {
  51   1        unsigned char i;
  52   1        LCDE=0;
  53   1        RS=0;
  54   1        RW=0;
  55   1        RS=0;
C51 COMPILER V6.12  TEXT2                                                                  04/10/2009 21:44:22 PAGE 2   

  56   1        RW=1;
  57   1        LCDE=1;
  58   1        i=Ddata;
  59   1          LCDE=0;
  60   1        return(i);
  61   1      }
  62           
  63          void init()//**********初始化程序,必须按照产品的资料介绍的过程进行********//
  64          {
  65   1       wr_com(0x38);   //*****显示模式设置必须三次,不用检测忙信号
  66   1       delay5ms();
  67   1       wr_com(0x38);
  68   1       delay5ms();
  69   1       wr_com(0x38);
  70   1       delay5ms();
  71   1       wr_com(0x01);   ///***清屏****
  72   1       delay5ms();
  73   1       busycheck();
  74   1       delay5ms();
  75   1       wr_com(0x06);   ///****光标移动设置***
  76   1       delay5ms();
  77   1       busycheck();
  78   1       delay50us();
  79   1       wr_com(0x38);   ////***显示模式设置****
  80   1       delay50us();
  81   1       busycheck();
  82   1       delay50us();
  83   1       wr_com(0x0c);   /////***显示开***
  84   1       delay50us();
  85   1       busycheck();
  86   1       delay50us();
  87   1       wr_com(0x40);  //set cgram address
  88   1       delay50us();
  89   1       delay50us();      //***这些延时可用可不用***//
  90   1      }
  91          
  92          void display()
  93          {  unsigned char i;
  94   1        wr_com(0x80);  //set ram address
  95   1        delay50us();
  96   1        busycheck();
  97   1        delay50us();
  98   1        for(i=0;i<16;i++)
  99   1             {wr_data(line1[i]);  //display
 100   2        delay50us();
 101   2        busycheck();}
 102   1        busycheck();
 103   1        delay50us();
 104   1        wr_com(0xc0);
 105   1        delay50us();
 106   1        busycheck();
 107   1        delay50us();
 108   1        for(i=0;i<16;i++)
 109   1        {
 110   2         wr_data(line2[i]);  //display
 111   2         delay50us();
 112   2         busycheck();
 113   2        }
 114   1      }
 115          
 116          void main()
 117          {
C51 COMPILER V6.12  TEXT2                                                                  04/10/2009 21:44:22 PAGE 3   

 118   1      TMOD=0X01;
 119   1      EA=1;
 120   1      ET0=1;
 121   1      TR0=1;
 122   1      TH0=(65536-4995)/256;
 123   1      TL0=(65536-4995)%256;
 124   1      init(); 
 125   1       while(1)
 126   1         {line2[15]=tab[sec%10];line2[14]=tab[sec/10];
 127   2          line2[12]=tab[min%10];line2[11]=tab[min/10];
 128   2         line2[9]=tab[hour%10];line2[8]=tab[hour/10];
 129   2       if(!P1_2){delay();if(!P1_2){delay();sec++;if(sec==60){sec=0;}}}
 130   2       if(!P1_1){delay();if(!P1_1){delay();min++;if(min==60){min=0;}}}
 131   2       if(!P1_0){delay();if(!P1_0){delay();hour++;if(hour==24){hour=0;}}}
 132   2          display();
 133   2          }
 134   1      }
 135          void t0(void)interrupt 1 using 0
 136          {
 137   1      TH0=(65536-4995)/256;
 138   1      TL0=(65536-4995)%256;
 139   1       count++;
 140   1       if(count==200){count=0;sec++;}
 141   1       if(sec==60){sec=0;min++;}
 142   1       if(min==60){min=0;hour++;}
 143   1       if(hour==24){hour=0;}
 144   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    446    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     47    ----
   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 + -