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

📄 yejingshizhong.lst

📁 一个可调小时分钟的数字钟系统
💻 LST
字号:
C51 COMPILER V7.50   YEJINGSHIZHONG                                                        08/24/2007 10:53:40 PAGE 1   


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

line level    source

   1          #include <reg51.h>
   2          #include "intrins.h"
   3          #include "absacc.h"
   4          
   5          sbit RS=P2^0;
   6          sbit RW=P2^1;
   7          sbit E   = P2^2;
   8          sbit PSB = P2^3;
   9          sbit RST = P2^4;
  10          sbit key1= P2^5;
  11          sbit tiaoh=P2^6;
  12          sbit tiaom=P2^7;
  13          sbit P37=P3^7;
  14          
  15          unsigned char dispbuf[8]={0,0,10,0,0,10,0,0};
  16          unsigned char flag;
  17          unsigned char second;
  18          unsigned char minite;
  19          unsigned char hour;
  20          unsigned int tcnt;
  21          unsigned char z;
  22          unsigned int tcnt1;
  23          unsigned char scnt1;
  24          unsigned char y;
  25          
  26          void delay10ms(void) 
  27          {
  28   1         char i,j; 
  29   1        for(i=20;i>0;i--) 
  30   1        for(j=248;j>0;j--);
  31   1        }  
  32          void delay_10us( unsigned char x )
  33          {
  34   1           while( x-- );        
  35   1      }
  36          void delay_ms( unsigned char cnt ) 
  37          { 
  38   1           unsigned char i; 
  39   1           do{ 
  40   2                  i = 4; 
  41   2                  do{ 
  42   3                         delay_10us(39); 
  43   3                     } while(--i); 
  44   2              } while( --cnt ); 
  45   1      } 
  46          void smNop(void)
  47          {
  48   1              _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
  49   1              _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
  50   1      }
  51          
  52          void check_busy(void)
  53          {
  54   1       P1=0xff;
  55   1       RS=0;
C51 COMPILER V7.50   YEJINGSHIZHONG                                                        08/24/2007 10:53:40 PAGE 2   

  56   1       RW=1;
  57   1       while(1)
  58   1       {smNop();
  59   2        E=1;
  60   2        smNop();
  61   2        if(P1<0x80)
  62   2           break;
  63   2        smNop();
  64   2        E=0; 
  65   2         }
  66   1       E=0;
  67   1       }
  68          
  69          void send_com(const unsigned char command) 
  70          { 
  71   1           check_busy(); 
  72   1           RS = 0; 
  73   1           RW = 0;     
  74   1               P1 = command; 
  75   1           E  = 1; 
  76   1           smNop(); 
  77   1           E = 0; 
  78   1      }
  79          
  80          void send_com_init(const unsigned char command_init ) 
  81          { 
  82   1           RS    = 0; 
  83   1           RW    = 0;
  84   1               P1    = command_init; 
  85   1           E     = 1; 
  86   1           smNop();
  87   1           E     = 0; 
  88   1      }
  89          
  90          void send_data(const unsigned char data_a)
  91          { 
  92   1           check_busy(); 
  93   1           RS    = 1;                 //DB7-DB0为显示数据
  94   1           RW    = 0;             //写入数据
  95   1               P1    = data_a; 
  96   1           E     = 1;         
  97   1           smNop();
  98   1           E     = 0;                         //下降沿
  99   1      }
 100          
 101          void initial_LCD(void) 
 102          {   
 103   1           PSB = 1;   //水平显示
 104   1           RST = 0;   //复位 
 105   1           _nop_(); 
 106   1           _nop_(); 
 107   1           RST = 1;   //不复位
 108   1           _nop_(); 
 109   1           delay_10us(10); 
 110   1           send_com_init(0x30);//30H--基本指令操作 
 111   1           delay_10us(4); 
 112   1           send_com_init(0x0c);//开显示,关光标,不闪烁。 
 113   1           delay_10us(10); 
 114   1           send_com_init(0x01);//清除显示 
 115   1           delay_ms(10); 
 116   1           send_com_init(0x06);//指定在资料写入或读取时,光标的移动方向,DDRAM的地址计数器(AC)加1。     
 117   1      }
C51 COMPILER V7.50   YEJINGSHIZHONG                                                        08/24/2007 10:53:40 PAGE 3   

 118          
 119          void Display_num( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char i1 )
 120          {    
 121   1           unsigned char ddram = 0x00;
 122   1      
 123   1               if(line == 1)
 124   1                      ddram = 0x80;
 125   1               if(line == 2)
 126   1                      ddram = 0x90;
 127   1               if(line == 3)
 128   1                      ddram = 0x88;
 129   1               if(line == 4)
 130   1                  ddram = 0x98;
 131   1      
 132   1           ddram = ddram + col - 1;
 133   1      
 134   1           send_com( ddram );  //定位显示起始地址
 135   1      
 136   1               send_data( ptr[i1] );//输出单个字符 
 137   1                        
 138   1      }
 139          
 140          void Display_ch( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length )
 141          {
 142   1      
 143   1               unsigned char ddram = 0x00;
 144   1               unsigned char i1;
 145   1               if(line == 1)
 146   1                      ddram = 0x80;
 147   1               if(line == 2)
 148   1                      ddram = 0x90;
 149   1               if(line == 3)
 150   1                      ddram = 0x88;
 151   1               if(line == 4)
 152   1                  ddram = 0x98;
 153   1      
 154   1               ddram = ddram + col - 1;
 155   1           send_com( ddram );   //定位显示起始地址
 156   1               for( i1 = 0;i1 < length;i1 ++ )
 157   1               {
 158   2                       send_data(ptr[i1*2]);//输出单个字符
 159   2                       send_data(ptr[i1*2+1]); 
 160   2           }            
 161   1      }
 162          
 163          const unsigned char code suc[]=
 164          {  "智能闹钟"
 165           };
 166           const unsigned char code shuzhi[]={
 167             "0123456789 "};
 168          
 169            void main()
 170           {TMOD=0x22;
 171   1        TH1=0x06;
 172   1        TL1=0x06;
 173   1        ET1=1;
 174   1        EA=1; 
 175   1        TH0=0x06; 
 176   1        TL0=0x06;  
 177   1        ET0=1; 
 178   1        EA=1;
 179   1        TR0=1;
C51 COMPILER V7.50   YEJINGSHIZHONG                                                        08/24/2007 10:53:40 PAGE 4   

 180   1        initial_LCD();
 181   1        Display_ch(suc,1,3,4);
 182   1        while(1)
 183   1          {
 184   2               if(tiaoh==0)
 185   2                 {delay10ms();
 186   3                  if(tiaoh==0)
 187   3                        {hour++;
 188   4                         if(hour==24)
 189   4                            hour=0;
 190   4                              dispbuf[0]=hour/10;
 191   4                              dispbuf[1]=hour%10;
 192   4                              while(tiaoh==0);
 193   4                              }
 194   3                 }
 195   2               if(tiaom==0)
 196   2                  {delay10ms();
 197   3                       if(tiaom==0)
 198   3                         {minite++;
 199   4                          if(minite==60)
 200   4                                 minite=0;
 201   4                              dispbuf[3]=minite/10;
 202   4                              dispbuf[4]=minite%10;
 203   4                              while(tiaom==0);
 204   4                          }
 205   3                         }
 206   2           if(flag==1)
 207   2                 {flag=0;
 208   3                      send_com(0x90);
 209   3                      for(y=0;y<8;y++)
 210   3                         {send_data( shuzhi[dispbuf[y]] );}
 211   3                      if(dispbuf[3]==5&&dispbuf[4]==9&&dispbuf[6]==5)
 212   3                     TR1=1;
 213   3                       }
 214   2                  
 215   2               }    
 216   1        }
 217          
 218          void t0(void) interrupt 1 using 0 
 219          { 
 220   1        tcnt++; 
 221   1        if(tcnt==4000) 
 222   1          { 
 223   2            tcnt=0;
 224   2                flag=1; 
 225   2            second++; 
 226   2            if(second==60) 
 227   2              { 
 228   3                second=0; 
 229   3                minite++; 
 230   3                if(minite==60) 
 231   3                  { 
 232   4                    minite=0; 
 233   4                    hour++; 
 234   4                    if(hour==24) 
 235   4                      { 
 236   5                       hour=0; 
 237   5                      } 
 238   4                  } 
 239   3              } 
 240   2            dispbuf[7]=second%10; 
 241   2            dispbuf[6]=second/10; 
C51 COMPILER V7.50   YEJINGSHIZHONG                                                        08/24/2007 10:53:40 PAGE 5   

 242   2            dispbuf[4]=minite%10; 
 243   2            dispbuf[3]=minite/10; 
 244   2            dispbuf[1]=hour%10; 
 245   2            dispbuf[0]=hour/10; 
 246   2          }
 247   1      }
 248          
 249          void t1(void) interrupt 3 using 1
 250          {
 251   1       scnt1++;
 252   1       if(scnt1==4)
 253   1         {scnt1=0;
 254   2         P37=~P37;}
 255   1       tcnt1++;
 256   1       if(tcnt1==800)
 257   1          {TR1=0;
 258   2               P37=0;}
 259   1       }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    657    ----
   CONSTANT SIZE    =     21    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     19      12
   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 + -