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

📄 main.lst

📁 基于51系列单片机的介绍IIC的原理与应用的软件设计
💻 LST
字号:
C51 COMPILER V7.06   MAIN                                                                  12/24/2007 12:35:57 PAGE 1   


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

stmt level    source

   1          /* 
   2          程序功能:  Bank3 PCF8563时钟程序,k1修改小时,k2修改分钟
   3          完成时间:  2007-12-24
   4          */
   5          #include<at89x52.h>
   6          /*************************************************
   7                  引用外部函数
   8          **************************************************/
   9          extern WRBYTES(unsigned masteraddr,unsigned char Ramaddr,unsigned char buf[],unsigned char num,bit wr);
  10          unsigned char code DisCode[] = {0x0C0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF,0xbf};
  11                                          //共阳极数码管码表,定位在ROM中
  12          unsigned char Disbuf[] = {1,2,0x0b,4,5,0x0b,7,8};       //显示初始化
  13          unsigned char Time[3] ;          //时间信息   
  14          sbit LED_DIG = P1^3;
  15          sbit LED_COM = P1^2;
  16          sbit k1      = P3^2;
  17          sbit k2      = P3^3;
  18          /************************************************
  19                  显示延时
  20          *************************************************/
  21          void Delay(unsigned char j)
  22          {
  23   1              unsigned char i;
  24   1              for (i=0;i<j;i++ );
  25   1      }
  26          /************************************************
  27                  带参数传递的显示程序
  28          *************************************************/
  29          void Display(unsigned char Dat[8])
  30          {
  31   1              static unsigned char i = 0;
  32   1              unsigned LED_Posit = 0x01;
  33   1              for(i = 0;i<8;i++)
  34   1              {
  35   2                      P0 = DisCode[Dat[i]];   //送段选
  36   2                      P0 = DisCode[Dat[i]];   //送段选
  37   2                      LED_DIG = 1;
  38   2                      LED_DIG = 0;
  39   2                      P0 = LED_Posit;                         //选通一个数码管
  40   2                      LED_COM = 1;
  41   2                      LED_COM = 0;
  42   2                      Delay(200);
  43   2                      P0 = 0;                         //消隐
  44   2                      LED_COM = 1;
  45   2                      LED_COM = 0;
  46   2                      LED_Posit<<=1;
  47   2              }
  48   1      }
  49          /*************************************
  50                  读入8583计时时间
  51          **************************************/
  52          void Read8583Time()
  53          {
  54   1              WRBYTES(0xa2,0x02,Time,3,1);   
  55   1              Disbuf[1] = (Time[0]>>4)&0x07;
C51 COMPILER V7.06   MAIN                                                                  12/24/2007 12:35:57 PAGE 2   

  56   1              Disbuf[0] =  Time[0]&0x0f;              //秒
  57   1              Disbuf[4] = (Time[1]>>4)&0x07;
  58   1              Disbuf[3] =  Time[1]&0x0f;              //分
  59   1              Disbuf[7] = (Time[2]>>4)&0x03;
  60   1              Disbuf[6] =  Time[2]&0x0f;              //时
  61   1      }
  62          /*************************************************
  63                  修改时间
  64          **************************************************/
  65          void KeyInt() 
  66          {
  67   1              unsigned char HourGw,HourSw,MinGw,MinSw;
  68   1              /////////////加小时/////////////////////
  69   1              if(k1 == 0)
  70   1              {
  71   2                      Delay(50);
  72   2                      if(k1 == 0)
  73   2                      {       
  74   3                              while(!k1)  Display(Disbuf);
  75   3                              HourGw    =  Time[2] & 0x0f ;
  76   3                              HourSw    = (Time[2] >> 4) & 0x03 ;
  77   3                              HourGw++;
  78   3                              if (HourSw < 2)
  79   3                              {
  80   4                                      if (HourGw == 10)   
  81   4                                      {
  82   5                                              HourSw ++;
  83   5                                              HourGw = 0;
  84   5                                      }
  85   4                              } 
  86   3                              else 
  87   3                              {
  88   4                                      if (HourGw == 4)
  89   4                                      {
  90   5                                              HourSw = 0;
  91   5                                              HourGw = 0;
  92   5                                      }
  93   4                              }
  94   3                              Time[2] = ((HourSw<<4) & 0xf0) | (HourGw & 0x0f);       //修改小时
  95   3                              WRBYTES(0xa2,0x02,Time,3,0);
  96   3                      }
  97   2              }
  98   1      //////////////加分钟///////////////////
  99   1              if(k2 == 0)
 100   1              {
 101   2                      Delay(50);
 102   2                      if(k2 == 0)
 103   2                      {       
 104   3                              while(!k2)  Display(Disbuf);
 105   3                              MinGw     =  Time[1] & 0x0f ;
 106   3                              MinSw     = (Time[1] >> 4) & 0x07 ;
 107   3                              MinGw++;
 108   3                              if(MinGw == 10)
 109   3                              {
 110   4                                      if(MinSw < 5)           
 111   4                                      {
 112   5                                              MinGw = 0;
 113   5                                              MinSw++;
 114   5                                      }
 115   4                                      else 
 116   4                                      {
 117   5                                              MinGw = 0;
C51 COMPILER V7.06   MAIN                                                                  12/24/2007 12:35:57 PAGE 3   

 118   5                                              MinSw  = 0;
 119   5                                      }
 120   4                              }
 121   3                              Time[1] = ((MinSw<<4) & 0xf0) | (MinGw & 0x0f);       //修改分钟
 122   3                              WRBYTES(0xa2,0x02,Time,3,0);
 123   3                      }
 124   2              }
 125   1      }
 126          
 127          /**********************************************************************************
 128                  主函数
 129          ***********************************************************************************/
 130          main()
 131          {                  //  ↑----------------------------------------↓
 132   1              WRBYTES(0xa2,0x02,Time,3,1);   //读入8583初始时间,//I2C函数中已进行读写判断
 133   1              while(1)
 134   1              {               
 135   2                      Read8583Time();
 136   2                      Display(Disbuf);
 137   2                      KeyInt(); 
 138   2              }
 139   1      }


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