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

📄 zlg7289.lst

📁 一个用到ZLG7289的实际项目
💻 LST
字号:
C51 COMPILER V7.50   ZLG7289                                                               07/24/2007 21:41:17 PAGE 1   


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

line level    source

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

  56   1      } 
  57           
  58           
  59          /* 
  60          函数:ZLG7289_SPI_Read() 
  61          功能:从SPI总线读 1个字节的数据 
  62          返回: 
  63            读  
  64          */ 
  65          char ZLG7289_SPI_Read() reentrant 
  66          { 
  67   1              char dat; 
  68   1              unsigned char t = 8; 
  69   1              ZLG7289_pinDIO = 1;    //读 DIO引脚要置1以切换到输入状态 
  70   1              do 
  71   1              { 
  72   2                      ZLG7289_pinCLK = 1; 
  73   2                      ZLG7289_ShortDelay(); 
  74   2                      dat <<= 1; 
  75   2                      if ( ZLG7289_pinDIO ) dat++; 
  76   2                      ZLG7289_pinCLK = 0; 
  77   2                      ZLG7289_ShortDelay(); 
  78   2              } while ( --t != 0 ); 
  79   1              return dat; 
  80   1      } 
  81           
  82          /* 
  83          函数:ZLG7289_cmd() 
  84          功能:执行ZLG7289纯指令 
  85          参数: 
  86           cmd:命令字 
  87          */ 
  88          void ZLG7289_cmd(char cmd) 
  89          { 
  90   1              char sav = IE; 
  91   1              IE &= 0xFA;    //关闭外部中断 
  92   1              ZLG7289_pinCS = 0; 
  93   1              ZLG7289_LongDelay(); 
  94   1              ZLG7289_SPI_Write(cmd); 
  95   1              ZLG7289_pinCS = 1; 
  96   1              ZLG7289_LongDelay(); 
  97   1              IE = sav;    //恢复IE 
  98   1      } 
  99          
 100          /* 
 101          函数:ZLG7289_cmd_dat() 
 102          功能:执行ZLG7289带数据指令 
 103          参数: 
 104           cmd:命令字 
 105           dat:数据 
 106          */ 
 107          void ZLG7289_cmd_dat(char cmd, char dat) 
 108          { 
 109   1              char sav = IE; 
 110   1              IE &= 0xFA;    //关闭外部中断 
 111   1              ZLG7289_pinCS = 0; 
 112   1              ZLG7289_LongDelay(); 
 113   1              ZLG7289_SPI_Write(cmd); 
 114   1              ZLG7289_LongDelay(); 
 115   1              ZLG7289_SPI_Write(dat); 
 116   1              ZLG7289_pinCS = 1; 
 117   1              ZLG7289_LongDelay(); 
C51 COMPILER V7.50   ZLG7289                                                               07/24/2007 21:41:17 PAGE 3   

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

 180   1              //I/O口初始化 
 181   1              ZLG7289_pinCS = 1; 
 182   1              ZLG7289_pinCLK = 0; 
 183   1              ZLG7289_pinDIO = 1; 
 184   1              ZLG7289_pinINT = 1; 
 185   1              //延时初始化 
 186   1              ZLG7289_Delay_t = t; 
 187   1              //点亮所有数码管 
 188   1              for ( x=0; x<8; x++ ) 
 189   1              { 
 190   2                      ZLG7289_Download(1,x,1,0x08); 
 191   2              } 
 192   1      } 
 193          /* 
 194          函数:Delay() 
 195          功能:延时0.01 655.36s 
 196          参数: 
 197           t>0时,延时(t*0.01)s 
 198           t=0时,延时655.36s 
 199          说明: 
 200            晶振采用11.0592MHz 
 201          */ 
 202          
 203          //*********************************************
 204          void Delay(unsigned int t) 
 205          { 
 206   1        do 
 207   1       { 
 208   2        TH0 = 0xDC; 
 209   2        TL0 = 0x00; 
 210   2        TR0 = 1; 
 211   2         while ( !TF0 ); 
 212   2        TF0 = 0; 
 213   2        TR0 = 0; 
 214   2       } while (--t); 
 215   1      }


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