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

📄 ht1380_time1.lst

📁 自己的平时一些制作 现在整理一下 与大家一起分享
💻 LST
字号:
C51 COMPILER V7.20   HT1380_TIME1                                                          07/12/2007 10:17:00 PAGE 1   


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

line level    source

   1          #include <reg51.h>
   2          
   3          /*****定义ht1380芯片接口********/
   4          // ht1380 ht1380_sclk --->P1.0
   5          // ht1380 I/O  --->P1.1
   6          // ht1380 ht1380_rest --->P1.2
   7          sbit ht1380_sclk=P1^0;
   8          sbit ht1380_data=P1^1;
   9          sbit ht1380_rest=P1^2;
  10          /**********定义两个全局变量*********/
  11          //定义数组变量用于存放四个数码管的显示数据
  12          //定义number存放动态显示是第几个数码管
  13          unsigned char d[4],number;
  14          
  15          /*********定义时间变量年月日时分秒***********/
  16          unsigned char year,month,day,hour,minute,second;
  17          /**********定义冒号变量 distime=1 是数码管冒号显示出来************/
  18          bit distime;
  19          
  20          /*******与数码管相关的两个表*********/
  21          //一个显示译码表
  22          //一个使能译码表
  23          unsigned char code tab[10]={0x3f,6,0x5b,0x4f,0x66,0x6d,0x7d,7,0x7f,0x6f};
  24          unsigned char code digit[4]={0xf8,0xf4,0xf2,0xf1};
  25          
  26          /******延时程序***********/
  27          void delay(unsigned char dy)
  28          {
  29   1         while(--dy);
  30   1      }
  31          /*******  ht1380 子程序*****************/
  32          //------------- sent_char to ht1380----------
  33          //上升沿写入
  34          void sent_char(unsigned char sentchar)
  35          {
  36   1       unsigned char ii;  
  37   1      
  38   1       for(ii=0;ii<8;ii++)
  39   1          {
  40   2            ht1380_sclk=0;
  41   2            if ((sentchar & 1)!=0) ht1380_data=1;
  42   2            else ht1380_data=0;
  43   2            ht1380_sclk=1;
  44   2            sentchar=sentchar>>1;
  45   2          }
  46   1      }
  47          //------------- get_char from ht1380---------
  48          unsigned char get_char()
  49          {
  50   1       unsigned char getchar,ii,temp;
  51   1          getchar=0;temp=1;
  52   1          for(ii=0;ii<8;ii++)
  53   1            {
  54   2             ht1380_sclk=0;
  55   2             ht1380_data=1;
C51 COMPILER V7.20   HT1380_TIME1                                                          07/12/2007 10:17:00 PAGE 2   

  56   2             if(ht1380_data==1) getchar=getchar |temp;
  57   2             ht1380_sclk=1;
  58   2             temp=temp<<1;
  59   2            }
  60   1          return(getchar);
  61   1      }
  62           
  63          //-------------set_wp_off------------------
  64          void set_wp_off()
  65          {
  66   1          ht1380_rest=1;
  67   1          sent_char(0x8e);     //10001110b
  68   1          sent_char(0);        //00000000b
  69   1          ht1380_sclk=0;
  70   1          ht1380_rest=0;
  71   1      }
  72          //-----------set_wp_on--------------------
  73          void set_wp_on()
  74          {
  75   1        ht1380_rest=1;
  76   1        sent_char(0x8e);       //10001110b
  77   1        sent_char(0x80);       //10000000b
  78   1        ht1380_sclk=0;
  79   1        ht1380_rest=0;
  80   1      }
  81          //----------read_time --------------------
  82          void read_time()
  83           {
  84   1        unsigned char temp;
  85   1          ht1380_rest=1;
  86   1          sent_char(0xbf);      //10111111b
  87   1          second=get_char();
  88   1          minute=get_char();
  89   1          hour=  get_char();
  90   1          day=   get_char();
  91   1          month= get_char();
  92   1          temp=  get_char();   /* week day */
  93   1          year=  get_char();
  94   1          temp=  get_char();            
  95   1          ht1380_sclk=0;
  96   1          ht1380_rest=0;
  97   1         
  98   1       }
  99          //--------------set time-----------------
 100          void set_time()
 101           {
 102   1         set_wp_off();
 103   1         ht1380_rest=1;
 104   1         sent_char(0xbe);      //10111110b
 105   1         sent_char(second);
 106   1         sent_char(minute);
 107   1         sent_char(hour);
 108   1         sent_char(day);
 109   1         sent_char(month);
 110   1         sent_char(1);         /* week  day */
 111   1         sent_char(year);
 112   1         sent_char(0);
 113   1         ht1380_sclk=0;
 114   1         ht1380_rest=0;
 115   1         set_wp_on();
 116   1       }
 117          
C51 COMPILER V7.20   HT1380_TIME1                                                          07/12/2007 10:17:00 PAGE 3   

 118          /*****定时器初始化程序*******/
 119          void Init_Timer (void)
 120          {
 121   1          TMOD=0x21;
 122   1              TH0=(65536-1000)/256;
 123   1          TL0=(65536-1000)%256;
 124   1          TR0=1;
 125   1          ET0=1;
 126   1          EA=1;
 127   1      } 
 128          
 129          /*****定时器0中断服务程序******/
 130          //显示处理,具体可以参考前面的实验
 131          void timer0() interrupt 1 using 1
 132          {
 133   1          TH0=(65536-1000)/256;
 134   1          TL0=(65536-1000)%256;
 135   1          number=number++;
 136   1          if(number>3) number=0;
 137   1          P2=digit[number];
 138   1          P0=tab[d[number]]; 
 139   1              //在第二个数码管显示时,将最高位的小数点显示出来,这里为冒号
 140   1          if(distime==1 && number==1)  
 141   1             P0=tab[d[number]]+0x80;  
 142   1       }
 143          /*******主函数***********/
 144          //效果:显示 分:秒
 145          void main (void)
 146          {
 147   1       year=07;month=03;day=0x04;hour=0x19;minute=0x16;second=0x13; //软件预设时间参数
 148   1       ht1380_rest=0;ht1380_sclk=0;   //选中时钟芯片
 149   1       set_time();                    //设置时间
 150   1       Init_Timer();                  //初始化定时器及全局变量
 151   1       number=0;                      
 152   1       distime=1;                     
 153   1      while(1)
 154   1           {
 155   2            read_time();
 156   2      //      d[0]=hour/16;
 157   2      //      d[1]=hour %16;
 158   2      //      d[2]=minute/16;
 159   2      //      d[3]=minute %16;
 160   2            d[0]=minute/16;
 161   2                d[1]=minute%16;
 162   2                d[2]=second/16;
 163   2                d[3]=second%16;
 164   2            delay(250);
 165   2           }
 166   1      }
 167          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    350    ----
   CONSTANT SIZE    =     14    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     11    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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