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

📄 zlg7289.lst

📁 周立功的ZLG7289芯片组成的键盘
💻 LST
字号:
C51 COMPILER V7.09   ZLG7289                                                               08/24/2007 09:30:37 PAGE 1   


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

line level    source

   1          #include <reg51.h>
   2          #include"zlg7289.h"
   3          
   4          
   5          //函数:ZLG7289_Delay()
   6          //功能:短延时
   7          //说明:延时长度由Delay_T决定
   8          void ZLG7289_Delay(uchar Delay_T)
   9          {
  10   1              uchar i;
  11   1              for(i=0;i<Delay_T;i++);
  12   1              }
  13          
  14          
  15          //函数:SPI_WriteOneByte()
  16          //功能:向SPI总线写数据
  17          //说明:写入的数据长度为1字节
  18          void SPI_WriteOneByte(uchar Wdata)
  19          {
  20   1              uchar i;
  21   1              for(i=0;i<8;i++)
  22   1              {
  23   2                      ZLG7289_DIO = (bit)(Wdata&0x80);
  24   2                      ZLG7289_CLK = 1;
  25   2                      Wdata <<= 1;
  26   2                      ZLG7289_Delay(1);
  27   2                      ZLG7289_CLK     = 0;
  28   2                      ZLG7289_Delay(1);
  29   2                      
  30   2                      }
  31   1              }
  32          
  33          
  34          //函数:SPI_ReadOneByte()
  35          //功能:从SPI总线读数据
  36          //说明:返回1字节数据
  37          uchar SPI_ReadOneByte()
  38          {
  39   1              uchar i,temp;
  40   1              ZLG7289_DIO = 1;                        //将I/O切换到输入状态
  41   1              for(i=0;i<8;i++)
  42   1              {
  43   2                      ZLG7289_CLK = 1;
  44   2                      ZLG7289_Delay(5);
  45   2                      temp <<= 1;
  46   2                      if(ZLG7289_DIO) temp++;
  47   2                      ZLG7289_CLK     =       0;
  48   2                      ZLG7289_Delay(5);
  49   2                      }
  50   1              return temp;
  51   1              }
  52          
  53          //函数:ZLG7289_Instruc()
  54          //功能:执行ZLG7289纯指令
  55          //说明:指令长度为1字节
C51 COMPILER V7.09   ZLG7289                                                               08/24/2007 09:30:37 PAGE 2   

  56          void ZLG7289_Instruc(uchar Instruc)
  57          {
  58   1              uchar i;
  59   1              i = IE;
  60   1              IE &= 0xfa;                                                     // Disable external interrupt;
  61   1              ZLG7289_CS = 0;
  62   1              ZLG7289_Delay(5);
  63   1              SPI_WriteOneByte(Instruc);
  64   1              ZLG7289_CS = 1;
  65   1              ZLG7289_Delay(5);
  66   1              IE = i;                                                         
  67   1              }
  68          
  69          
  70          //函数:ZLG7289_Instruc_Data
  71          //功能:执行ZLG7289带数据指令
  72          //说明:指令长度以及数据长度均为1字节
  73          void ZLG7289_Instruc_Data(uchar Instruc,uchar Data)
  74          {
  75   1              uchar i;
  76   1              i = IE;
  77   1              IE &= 0xfa;
  78   1              ZLG7289_CS = 0;
  79   1              ZLG7289_Delay(5);
  80   1              SPI_WriteOneByte(Instruc);
  81   1              ZLG7289_Delay(5);
  82   1              SPI_WriteOneByte(Data);
  83   1              ZLG7289_CS = 1;
  84   1              ZLG7289_Delay(5);
  85   1              IE = i;
  86   1              }
  87          
  88          
  89          
  90          //函数:ZLG7289_ReadKey()
  91          //功能:执行ZLG7289读键盘指令
  92          //说明:返回1字节的按键号
  93          //                      按键号的范围为:0 ~ 63(即0x0 ~ 0x3f)
  94          //                      若没有按按键被按下了,返回255(即0xff)
  95          uchar ZLG7289_ReadKey()
  96          {
  97   1              uchar Key;
  98   1              ZLG7289_CS = 0;
  99   1              ZLG7289_Delay(10);
 100   1              SPI_WriteOneByte(0x15);
 101   1              ZLG7289_Delay(5);
 102   1              Key = SPI_ReadOneByte();
 103   1              ZLG7289_Delay(1);
 104   1              ZLG7289_CS = 1;
 105   1              ZLG7289_Delay(5);
 106   1              return Key;
 107   1              }
 108          
 109          
 110          //函数:ZLG7289_Init()
 111          //功能:初始化ZLG7289
 112          //说明:主要是对I/O进行初始化
 113          void ZLG7289_Init()
 114          {
 115   1              ZLG7289_CS = 1;
 116   1              ZLG7289_CLK = 0;
 117   1              ZLG7289_DIO = 1;
C51 COMPILER V7.09   ZLG7289                                                               08/24/2007 09:30:37 PAGE 3   

 118   1              ZLG7289_INT = 1;
 119   1              }
 120          
 121          
 122          //函数:ZLG7289_Reset()
 123          //功能:ZLG7289复位指令
 124          #define ZLG7289_Reset()         ZLG7289_Instruc(0xa4)
 125          
 126          
 127          //函数:ZLG7289_Test()
 128          //功能:ZLG7289测试指令
 129          #define ZLG7289_Test()          ZLG7289_Instruc(0xbf)
 130          
 131          
 132          //函数:ZLG7289_SHL()
 133          //功能:ZLG7289左移指令
 134          #define ZLG7289_SHL()                   ZLG7289_Instruc(0xa0)
 135          
 136          
 137          //函数:ZLG7289_SHR()
 138          //功能:ZLG7289右移指令
 139          #define ZLG7289_SHR()                   ZLG7289_Instruc(0xa1)
 140          
 141          
 142          //函数:ZLG7289_ROL()
 143          //功能:ZLG7289循环左移指令
 144          #define ZLG7289_ROL()                   ZLG7289_Instruc(0xa2)
 145          
 146          
 147          //函数:ZLG7289_ROR()
 148          //功能:ZLG7289循环右移指令
 149          #define ZLG7289_ROR()                   ZLG7289_Instruc(0xa3)
 150          
 151          
 152          //函数:ZLG7289_Down_Data()
 153          //功能:ZLG7289下载数据
 154          //说明:形参Decode_mod:模式选择(取值范围:1 ~ 3):1--模式0译码;2--模式1译码;3--不译码
 155          //                      Disp_addr:                     数码管显示数据的位地址(取值范围:0 ~ 7)
 156          //                      Disp_dp:                               小数点控制:0--小数点被点亮,1--小数点被熄灭
 157          //                      Disp_data:                     显示的数据
 158          void ZLG7289_Down_Data(uchar Decode_mod,uchar Disp_addr,bit Disp_dp,uchar Disp_data)
 159          {
 160   1              uchar Mode[] = {0x80,0xc8,0x90};
 161   1              uchar temp,temp1;
 162   1              if(Decode_mod==0x01) 
 163   1                      temp = Mode[0];
 164   1              else if(Decode_mod==0x02)
 165   1                      temp = Mode[1];
 166   1              else if(Decode_mod==0x03)
 167   1                      temp = Mode[2];
 168   1              if(Disp_dp==1)
 169   1                      temp1 = 0x80;
 170   1              else
 171   1                      temp1 = 0x00;
 172   1              ZLG7289_Instruc_Data((temp | Disp_addr),(temp1 | (Disp_data&0x7f)));            
 173   1              }
 174          
 175          
 176          //函数:ZLG7289_Glint
 177          //功能:ZLG7289闪烁控制
 178          //说明:形参temp为8bits数据,
 179          //      从temp的最高位置(MSB)到最低位(LSB)分别代表数码管的第7到第0位
C51 COMPILER V7.09   ZLG7289                                                               08/24/2007 09:30:37 PAGE 4   

 180          //                      0--闪烁,1--不闪烁
 181          #define ZLG7289_Glint(temp)                     ZLG7289_Instruc_Data(0x88,(temp))
 182          
 183          
 184          //函数:ZLG7289_Hide
 185          //功能:ZLG7289消隐控制
 186          //说明:形参temp为8bits数据,
 187          //                      从temp的最高位置(MSB)到最低位(LSB)分别代表数码管的第0到第7位
 188          //                      0--消隐,1--显示;复位后所有位都不消隐
 189          #define ZLG7289_Hide(temp)                      ZLG7289_Instruc_Data(0x98,(temp))
 190          
 191          
 192          //函数:ZLG7289_Seg_On
 193          //功能:ZLG7289段点亮指令
 194          //说明:形参seg的最高位置(MSB)到最低位(LSB)的格式为“XXd5d4d3d2d1d0”
 195          //                      其中“XX”为无关位,d5d4d3d2d1d0为6位段地址。
 196          //                      点亮顺序为g、f、e、d、c、b、a、dp
 197          #define ZLG7289_Seg_On(seg)                     ZLG7289_Instruc_Data(0xe0,(seg))
 198          
 199          
 200          //函数:ZLG7289_Seg_Off
 201          //功能:ZLG7289段关闭指令
 202          //说明:形参seg的最高位置(MSB)到最低位(LSB)的格式为“XXd5d4d3d2d1d0”
 203          //                      其中“XX”为无关位,d5d4d3d2d1d0为6位段地址。
 204          //                      关闭顺序为g、f、e、d、c、b、a、dp
 205          #define ZLG7289_Seg_Off(seg)            ZLG7289_Instruc_Data(0xc0,(seg))


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