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

📄 gen_display.lst

📁 基于NXP51单片机LPC932电子时钟的设计(致远公司学生用开发板)
💻 LST
字号:
C51 COMPILER V7.50   GEN_DISPLAY                                                           08/06/2007 20:01:49 PAGE 1   


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

line level    source

   1          /**************** File:exp10c.c ***************************
   2          *功能:取得随机数0-9,并依次组成8位号码,输出显示。
   3          *说明:时间时钟,显示 时  分  秒  时间设置使用Key1 ~Key3
   4          *          将跳线器J2、J13、J16分加短接到LED_/CS、MOSI、SPICLK端;
   5          *      通过跳线器J8、J9选择高频晶振6MHz
   6          ***************************************************************/
   7          #include < reg935.h>
   8          #define uchar unsigned char
   9          #define uint unsigned int 
  10          
  11          uchar temp=0x00;
  12          uchar j;
  13          uchar key1_val=0;//key2_val=0,key3_val=0,key4_val=0;
  14          uchar tenms=0x00,second=0,minute=0,hour=12; //时钟初始时间
  15          uchar Buffer[6];
  16          /* ZLG7289驱动定义 */
  17          sbit ZLG7289_CS=P2^0;
  18          sbit ZLG7289_CLK=P2^5;
  19          sbit ZLG7289_DIO=P2^2;
  20          /*按键管脚定义*/
  21          sbit Key1=P0^0;
  22          sbit Key2=P0^1;
  23          sbit Key3=P0^2;
  24          sbit Key4=P0^3;
  25          //uchar temp2=0x00;
  26          //按键定义
  27          sbit  KEY1=P0^0;
  28          
  29          //函数声明
  30          void IO_init();
  31          void TIM_init();
  32          void ZLG7289_com(uchar dat);
  33          void Delay_S(uchar );
  34          void Delay_L(uint )     ;
  35          void Delay_TF0(uchar t);
  36          void ZLG7289_SENDBYTE(uchar dat);
  37          void ZLG7289_SENDDAT(uchar dat,uchar loc);
  38          void TMdisplay();
  39          void DCB_convert();
  40          void Set_time();
  41          /*函数定义*/
  42          void IO_init()
  43          {
  44   1              P0M1=0x00;      // 端口设置                     Key1~key4
  45   1              P0M2=0x00;                                                       
  46   1              P2M1=0x00;      //spi
  47   1              P2M2=0x00;
  48   1      }
  49          void TIM_init()
  50          {
  51   1              
  52   1              /*使用定时器0:工作在定时器状态十六位计数*/
  53   1      
  54   1              TMOD = (TMOD & 0xF0) | 0x01;       /* Set T/C0 Mode 用作定时器*/
  55   1              TH0=(65536-30000)/256;             /*中断设置初始化 */                  
C51 COMPILER V7.50   GEN_DISPLAY                                                           08/06/2007 20:01:49 PAGE 2   

  56   1              TL0=(65536-30000)%256; 
  57   1              ET0 = 1;                           /* T0中断分路开关*/
  58   1              TR0 = 1;                           /* T0开关TR0 */
  59   1              EA = 1; 
  60   1                
  61   1      }
  62          void ZLG7289_com(uchar dat)
  63          {
  64   1          ZLG7289_CLK=0;
  65   1              ZLG7289_CS=0;
  66   1              ZLG7289_SENDBYTE(dat);  
  67   1              ZLG7289_CS=1;
  68   1      }
  69          /*us级短延时*/
  70          void Delay_S(uchar n)
  71          {
  72   1             uchar   j; 
  73   1             while(n>0) 
  74   1             { 
  75   2                   for(j=0;j<20;j--); 
  76   2                   n--; 
  77   2             } 
  78   1      }
  79          /*ms级短延时*/
  80          void Delay_L(uint n)
  81          {
  82   1              uint i,j;
  83   1              i=j=n;
  84   1              while(n>0)
  85   1              {
  86   2               while(i>0)
  87   2               {
  88   3                      while(j>0)
  89   3                      {
  90   4                      j--;
  91   4                      }
  92   3                      i--;
  93   3               }
  94   2               n--;
  95   2              }
  96   1      }
  97          void Delay_TF0(uchar t)
  98          {
  99   1              do
 100   1              {
 101   2                      while(!TF0);    
 102   2              }while(--t);
 103   1      }
 104          void ZLG7289_SENDBYTE(uchar dat)
 105          { 
 106   1        uchar i;
 107   1        Delay_S(5);
 108   1        //ZLG7289_CS=0;                                               
 109   1        for (i=0; i<0x8; i++)
 110   1           { //ZLG7289_CLK=0;
 111   2                                              
 112   2          if ( (dat&0x80)!=0 )ZLG7289_DIO=1;  //设置数据线
 113   2                else ZLG7289_DIO=0;
 114   2              Delay_S(1);
 115   2              ZLG7289_CLK=1;  
 116   2              Delay_S(1);
 117   2              ZLG7289_CLK=0;                          
C51 COMPILER V7.50   GEN_DISPLAY                                                           08/06/2007 20:01:49 PAGE 3   

 118   2              dat=dat<<1;                                     //移动数据
 119   2           }
 120   1        ZLG7289_DIO=0;
 121   1        //ZLG7289_CS=1;                                               //关闭
 122   1      }
 123          
 124          void ZLG7289_SENDDAT(uchar dat,uchar loc)
 125          {
 126   1              ZLG7289_CLK=0;
 127   1              ZLG7289_CS=0;
 128   1              ZLG7289_SENDBYTE(loc);
 129   1              ZLG7289_SENDBYTE(dat);
 130   1              ZLG7289_CS=1;   
 131   1      }
 132          
 133          void TMdisplay()
 134          {
 135   1              DCB_convert();
 136   1              //时
 137   1              ZLG7289_SENDDAT(Buffer[0],0x80);
 138   1              ZLG7289_SENDDAT(Buffer[1],0x81);
 139   1              ZLG7289_SENDDAT(0x0a,0x82);          //"-"
 140   1              //分
 141   1              ZLG7289_SENDDAT(Buffer[2],0x83);
 142   1              ZLG7289_SENDDAT(Buffer[3],0x84);
 143   1              ZLG7289_SENDDAT(0x0a,0x85);      //"-"
 144   1              //秒
 145   1              ZLG7289_SENDDAT(Buffer[4],0x86);
 146   1              ZLG7289_SENDDAT(Buffer[5],0x87);
 147   1      }
 148          void DCB_convert()
 149          {
 150   1              //时
 151   1              Buffer[1]=hour%10;
 152   1              Buffer[0]=hour/10;      
 153   1              //分
 154   1              Buffer[3]=minute%10;
 155   1              Buffer[2]=minute/10;
 156   1              //秒
 157   1              Buffer[5]=second%10;
 158   1              Buffer[4]=second/10;
 159   1      }
 160          void Set_time(void)
 161          {
 162   1         while(Key1==0) 
 163   1           {
 164   2            //Delay_L(10);
 165   2                Delay_TF0(1);
 166   2            if(Key1)
 167   2               { key1_val++; key1_val%=4;}
 168   2           }
 169   1      
 170   1              switch(key1_val)
 171   1              {
 172   2              case 0: 
 173   2                      ZLG7289_SENDDAT(0xdf,0x88);
 174   2                      break;
 175   2              case 1: 
 176   2                 if(Key2==0)
 177   2              {
 178   3               while(Key2==0) Delay_L(10); //Delay_L(10);
 179   3                hour++;
C51 COMPILER V7.50   GEN_DISPLAY                                                           08/06/2007 20:01:49 PAGE 4   

 180   3                hour%=24 ;
 181   3              }
 182   2             if(Key3==0)
 183   2               {
 184   3               while(Key3==0) Delay_L(10); //Delay_L(10);
 185   3                hour--;
 186   3                hour%=24 ;
 187   3              } 
 188   2                      ZLG7289_SENDDAT(0xfc,0x88);
 189   2              break;
 190   2      
 191   2              case 2:
 192   2             if(Key2==0)
 193   2              {
 194   3               while(Key2==0) Delay_L(10); //Delay_L(10);
 195   3                minute++;
 196   3                minute%=60 ;
 197   3              }
 198   2             if(Key3==0)
 199   2               {
 200   3               while(Key3==0) Delay_L(10); //Delay_L(10);
 201   3                minute--;
 202   3                minute%=60 ;
 203   3                
 204   3               }
 205   2              ZLG7289_SENDDAT(0xe7,0x88);
 206   2                  break;
 207   2              case 3:
 208   2                      if(Key2==0)
 209   2              {
 210   3               while(Key2==0)Delay_L(10); //Delay_L(10);
 211   3                second++;
 212   3                second%=60 ;
 213   3              }
 214   2              if(Key3==0)
 215   2               {
 216   3               while(Key3==0) Delay_L(10);//Delay_L(10);
 217   3                second--;
 218   3                second%=60 ;
 219   3                
 220   3               }
 221   2              ZLG7289_SENDDAT(0x3f,0x88);
 222   2                  break;
 223   2               
 224   2          default:break;
 225   2          }
 226   1      }
 227          /*********************************************************************/
 228          /*函数:timer0_ISR(void)中断服务程序 
 229          /*功能:tenms 记时  (second , minute , hour )                                              */
 230          /*********************************************************************/
 231          void timer0_ISR (void) interrupt 1 using 1
 232          {
 233   1        tenms++;   
 234   1        TH0=(65536-30000)/256;           //中断设置初始化                   
 235   1        TL0=(65536-30000)%256;       
 236   1       //                               
 237   1       if(tenms>=100)              //满1秒
 238   1       {  
 239   2          tenms=0;                     //秒数加1
 240   2        if(++second>=60)          //满1分
 241   2          {
C51 COMPILER V7.50   GEN_DISPLAY                                                           08/06/2007 20:01:49 PAGE 5   

 242   3           second=0;                   //分数加1,秒数归零 
 243   3         if(++minute>=60)              //满1小时
 244   3          {
 245   4           minute=0;                   //小时数加1,分数归零
 246   4         if(++hour>=24) 
 247   4          {  hour=0;}
 248   4          }
 249   3          }
 250   2        }
 251   1      }
 252          void main()
 253          {
 254   1        IO_init();
 255   1        ZLG7289_com(0xa4);
 256   1        TIM_init();           //定时器初始设置
 257   1       // ZLG7289_SENDDAT(0xdf,0x88);
 258   1        while(1)
 259   1        {
 260   2                TMdisplay();
 261   2                Set_time();
 262   2                Delay_L(100); 
 263   2        }
 264   1      }
 265          


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