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

📄 zlg7289.lst

📁 使用89c51单片机实现单总线多个DS18B20测温
💻 LST
字号:
C51 COMPILER V7.50   ZLG7289                                                               01/12/2008 11:32:30 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE ZLG7289
OBJECT MODULE PLACED IN ZLG7289.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\c51.exe ZLG7289.c DB OE SMALL ROM(LARGE)

line level    source

   1          /*
   2          ZLG7289.c
   3          数码管显示与键盘管理芯片ZLG7289 的标准80C51 驱动程序(C51)
   4          Copyright (c) 2005,广州周立功单片机发展有限公司
   5          All rights reserved.
   6          本程序仅供学习参考,不提供任何可靠性方面的担保;请勿用于商业目的。
   7          */
   8          
   9          
  10          #include "ZLG7289.h"
  11          //定义一个全局变量,用于延时
  12          //该变量在调用函数ZLG7289_Init()时被初始化
  13          unsigned char ZLG7289_Delay_t;
  14          /*
  15          宏定义:ZLG7289_ShortDelay()
  16          功能:短延时
  17          说明:延时(ZLG7289_Delay_t*2+2)个机器周期
  18          */
  19          #define ZLG7289_ShortDelay() \
  20          {\
  21          unsigned char t = ZLG7289_Delay_t;\
  22          while ( --t != 0 );\
  23          }
  24          /*
  25          宏定义:ZLG7289_LongDelay()
  26          功能:长延时
  27          说明:延时(ZLG7289_Delay_t*12+8)个机器周期
  28          */
  29          #define ZLG7289_LongDelay() \
  30          {\
  31          unsigned char t = ZLG7289_Delay_t * 6;\
  32          while ( --t != 0 );\
  33          }
  34          /*
  35          函数:ZLG7289_SPI_Write()
  36          功能:向SPI 总线写入1 个字节的数据
  37          参数:
  38          dat:要写入的数据
  39          */
  40          void ZLG7289_SPI_Write(char dat)    // reentrant//去除可重入属性,否则程序不能正常运行
  41          {
  42   1      unsigned char t = 8;
  43   1      do
  44   1      {
  45   2      ZLG7289_pinDIO = (bit)(dat & 0x80);
  46   2      dat <<= 1;
  47   2      ZLG7289_pinCLK = 1;
  48   2      ZLG7289_ShortDelay();
  49   2      ZLG7289_pinCLK = 0;
  50   2      ZLG7289_ShortDelay();
  51   2      } while ( --t != 0 );
  52   1      }
  53          /*
  54          函数:ZLG7289_SPI_Read()
  55          功能:从SPI 总线读取1 个字节的数据
C51 COMPILER V7.50   ZLG7289                                                               01/12/2008 11:32:30 PAGE 2   

  56          返回:
  57          读取到的数据
  58          */
  59          char ZLG7289_SPI_Read()      //reentrant //   去除可重入属性,否则程序不能正常运行
  60          {
  61   1      char dat;
  62   1      unsigned char t = 8;
  63   1      ZLG7289_pinDIO = 1; //读取数据之前DIO 引脚要置1 以切换到输入状态
  64   1      do
  65   1      {
  66   2      ZLG7289_pinCLK = 1;
  67   2      ZLG7289_ShortDelay();
  68   2      dat <<= 1;
  69   2      if ( ZLG7289_pinDIO ) dat++;
  70   2      ZLG7289_pinCLK = 0;
  71   2      ZLG7289_ShortDelay();
  72   2      } while ( --t != 0 );
  73   1      return dat;
  74   1      }
  75          /*
  76          函数:ZLG7289_cmd()
  77          功能:执行ZLG7289 纯指令
  78          参数:
  79          cmd:命令字
  80          */
  81          void ZLG7289_cmd(char cmd)
  82          {
  83   1      char sav = IE;
  84   1      IE &= 0xFA; //关闭外部中断
  85   1      ZLG7289_pinCS = 0;
  86   1      ZLG7289_LongDelay();
  87   1      ZLG7289_SPI_Write(cmd);
  88   1      ZLG7289_pinCS = 1;
  89   1      ZLG7289_LongDelay();
  90   1      IE = sav; //恢复IE
  91   1      }
  92          /*
  93          函数:ZLG7289_cmd_dat()
  94          功能:执行ZLG7289 带数据指令
  95          参数:
  96          cmd:命令字
  97          dat:数据
  98          */
  99          void ZLG7289_cmd_dat(char cmd, char dat)
 100          {
 101   1      char sav = IE;
 102   1      IE &= 0xFA; //关闭外部中断
 103   1      ZLG7289_pinCS = 0;
 104   1      ZLG7289_LongDelay();
 105   1      ZLG7289_SPI_Write(cmd);
 106   1      ZLG7289_LongDelay();
 107   1      ZLG7289_SPI_Write(dat);
 108   1      ZLG7289_pinCS = 1;
 109   1      ZLG7289_LongDelay();
 110   1      IE = sav; //恢复IE
 111   1      }
 112          /*
 113          函数:ZLG7289_Download()
 114          功能:下载数据
 115          参数:
 116          mod=0:下载数据且按方式0 译码
 117          mod=1:下载数据且按方式1 译码
C51 COMPILER V7.50   ZLG7289                                                               01/12/2008 11:32:30 PAGE 3   

 118          mod=2:下载数据但不译码
 119          x:数码管编号(横坐标),取值0~7
 120          dp=0:小数点不亮
 121          dp=1:小数点亮
 122          dat:要显示的数据
 123          说明:
 124          译码方式的具体含义请参考数据手册
 125          */
 126          void ZLG7289_Download(unsigned char mod, char x, bit dp, char dat)
 127          {
 128   1      code char ModDat[3] = {0x80,0xC8,0x90};
 129   1      char d1;
 130   1      char d2;
 131   1      if ( mod > 2 ) mod = 2;
 132   1      d1 = ModDat[mod];
 133   1      x &= 0x07;
 134   1      d1 |= x;
 135   1      d2 = dat & 0x7F;
 136   1      if ( dp ) d2 |= 0x80;
 137   1      ZLG7289_cmd_dat(d1,d2);
 138   1      }
 139          /*
 140          功能:执行ZLG7289 键盘命令
 141          返回:
 142          返回读到的按键值:0~63
 143          如果返回0xFF 则表示没有键按下
 144          */
 145          char ZLG7289_Key()      //reentrant  //去除可重入属性,否则程序不能正常运行
 146          {
 147   1      char key;
 148   1      ZLG7289_pinCS = 0;
 149   1      ZLG7289_LongDelay();
 150   1      ZLG7289_SPI_Write(0x15);
 151   1      ZLG7289_LongDelay();
 152   1      key = ZLG7289_SPI_Read();
 153   1      ZLG7289_pinCS = 1;
 154   1      ZLG7289_LongDelay();
 155   1      return key;
 156   1      }
 157          /*
 158          函数:ZLG7289_Init()
 159          功能:ZLG7289 初始化
 160          参数:
 161          t:SPI 总线的延时值设置,取值1-40(超出范围可能导致错误)
 162          说明:
 163          t的取值可以参照以下公式:t >= 5 * f1 / f2,其中f1 表示80C51 的
 164          晶振频率,f2 表示ZLG7289 的晶振频率
 165          */
 166          void ZLG7289_Init(unsigned char t)
 167          {
 168   1      unsigned char x;
 169   1      //I/O 口初始化
 170   1      ZLG7289_pinCS = 1;
 171   1      ZLG7289_pinCLK = 0;
 172   1      ZLG7289_pinDIO = 1;
 173   1      ZLG7289_pinINT = 1;
 174   1      //延时初始化
 175   1      ZLG7289_Delay_t = t;
 176   1      //点亮所有数码管
 177   1      for ( x=0; x<8; x++ )
 178   1      {
 179   2      ZLG7289_Download(1,x,1,8);
C51 COMPILER V7.50   ZLG7289                                                               01/12/2008 11:32:30 PAGE 4   

 180   2      }
 181   1      }


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