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

📄 ht1380.lst

📁 ht1380+1602液晶显示
💻 LST
字号:
C51 COMPILER V8.02   HT1380                                                                04/18/2009 18:48:44 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE HT1380
OBJECT MODULE PLACED IN HT1380.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE HT1380.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //**********************************************
   2          //本程序来自《51单片机及其C语言程序开发实例》
   3          //**********************************************
   4          #include <reg51.h>
   5          #include "HT1380.h"
   6          
   7          
   8          //极短延时函数:nNop()
   9          void nNop(uchar x)
  10          {
  11   1              for(;x>0;x--);
  12   1              }
  13          
  14          //向SPI写一字节数据函数:SPI_WriteByte()
  15          void SPI_WriteByte(uint x)
  16          {
  17   1              uchar i;
  18   1              uint temp = 0x01;
  19   1              SetPinDIO(0);
  20   1              for(i=0;i<8;i++)
  21   1              {
  22   2                      PinDIO = x & temp;
  23   2                      SetSCLK(1);
  24   2                      temp = temp << 1;
  25   2                      SetSCLK(0);                             
  26   2                      }
  27   1              }
  28                  
  29          //向SPI读一字节数据函数:SPI_ReadByte()
  30          uint SPI_ReadByte(void)
  31          {
  32   1              uchar i;
  33   1              uint temp = 0x00;
  34   1              SetPinDIO(1);
  35   1              for(i=0;i<8;i++)
  36   1              {
  37   2                      SetSCLK(1);
  38   2                      temp = (temp >> 1) | PinDIO; 
  39   2                      SetSCLK(0);             
  40   2                      }
  41   1               return(temp);
  42   1              }
  43          
  44          //写命令加写数据函数:WriteByte()
  45          void WriteByte(uint x, uint y)
  46          {
  47   1              uchar i,j;
  48   1              SetPinDIO(0);
  49   1              for(i=0;i<8;i++)
  50   1              {
  51   2                      PinDIO = x & 0x01;
  52   2                      SetSCLK(1);
  53   2                      x >>= 1;
  54   2                      SetSCLK(0);
  55   2                      }
C51 COMPILER V8.02   HT1380                                                                04/18/2009 18:48:44 PAGE 2   

  56   1              for(j=0;j<8;j++)
  57   1              {
  58   2                      PinDIO = y & 0x01;
  59   2                      SetSCLK(1);
  60   2                      y >>= 1;
  61   2                      SetSCLK(0);
  62   2                      }       
  63   1              }
  64                  
  65          //写命令加读数据函数:ReadByte()
  66          uint ReadByte(uint x)
  67          {
  68   1              uchar i,j;
  69   1              uint temp = 0x00;
  70   1              uint temp1;
  71   1              SetPinDIO(0);
  72   1              for(i=0;i<8;i++)
  73   1              {
  74   2                      PinDIO = x & 0x01;
  75   2                      SetSCLK(1);
  76   2                      x >>= 1;
  77   2                      SetSCLK(0);
  78   2                      }
  79   1              SetPinDIO(1);
  80   1              for(j=0;j<8;j++)
  81   1              {
  82   2                      SetSCLK(1);
  83   2                      temp1 = PinDIO;
  84   2                      temp1 <<= j;
  85   2                      temp = temp | temp1;
  86   2                      SetSCLK(0);
  87   2                      }
  88   1              return(temp);   
  89   1              }
  90          
  91                  
  92          //使能(启动)时钟函数:StartClock()
  93          void StartClock(void)
  94          {
  95   1              SetREST(0);
  96   1              nNop(1);
  97   1              SetREST(1);
  98   1              WriteByte(0x8e,0x00);  //置WP = 0
  99   1              SetREST(0);
 100   1              nNop(1);
 101   1              SetREST(1);
 102   1              WriteByte(0x80,0x00); //置CH = 0
 103   1              SetREST(0);
 104   1              }
 105                  
 106          //单字节模式对HT1380写数据函数:HT1380_Single_Write()
 107          void HT1380_Single_Write(uint RegNum, uint Data)
 108          {
 109   1              uint Cmd;
 110   1              Cmd = 0x80 | (RegNum << 1);
 111   1              //StartClock();
 112   1              SetREST(1);
 113   1              WriteByte(Cmd,Data);
 114   1              SetREST(0);
 115   1              //nNop(10);
 116   1              }
 117          
C51 COMPILER V8.02   HT1380                                                                04/18/2009 18:48:44 PAGE 3   

 118          //单字节模式对HT1380读数据函数:HT1380_Single_Read()
 119          uint HT1380_Single_Read(uint RegNum)
 120          {
 121   1              uint Data;
 122   1              uint Cmd;
 123   1              Cmd = 0x81 | (RegNum << 1);
 124   1              SetREST(1);
 125   1              Data = ReadByte(Cmd);
 126   1              SetREST(0);
 127   1              return(Data);
 128   1              }
 129          
 130          //多字节模式对HT1380写数据函数:HT1380_Burst_Write()
 131          void HT1380_Burst_Write(uint Data_Array[])
 132          {
 133   1              uint i,j,k;
 134   1              uint Cmd = 0xbe;
 135   1              uint temp;
 136   1              SetPinDIO(0);
 137   1              SetREST(1);
 138   1              for(i=0;i<8;i++)
 139   1              {
 140   2                      PinDIO = Cmd & 0x01;
 141   2                      SetSCLK(1);
 142   2                      Cmd >>= 1;
 143   2                      SetSCLK(0);
 144   2                      }
 145   1              for(j=0;j<8;j++)
 146   1              {
 147   2                      temp = Data_Array[j];
 148   2                      for(k=0;k<8;k++)
 149   2                      {
 150   3                              PinDIO = temp & 0x01;
 151   3                              SetSCLK(1);
 152   3                              temp >>= 1;
 153   3                              SetSCLK(0);                     
 154   3                              }
 155   2                      }
 156   1              SetREST(0);
 157   1              }
 158          
 159          
 160          //多字节模式对HT1380读数据函数:HT1380_Burst_Read()
 161          void HT1380_Burst_Read(uint Data_Array[])
 162          {
 163   1              uint i,j,k;
 164   1              uint Cmd = 0xbf;
 165   1              uint temp;
 166   1              SetPinDIO(0);
 167   1              SetREST(1);
 168   1              for(i=0;i<8;i++)
 169   1              {
 170   2                      PinDIO = Cmd & 0x01;
 171   2                      SetSCLK(1);
 172   2                      Cmd >>= 1;
 173   2                      SetSCLK(0);
 174   2                      }
 175   1              SetPinDIO(1);
 176   1              for(j=0;j<8;j++)
 177   1              {
 178   2                      for(k=0;k<8;k++)
 179   2                      {
C51 COMPILER V8.02   HT1380                                                                04/18/2009 18:48:44 PAGE 4   

 180   3                              SetSCLK(1);
 181   3                              temp = PinDIO;
 182   3                              temp >>= k;
 183   3                              Data_Array[j] |= temp; 
 184   3                              SetSCLK(0);                     
 185   3                              }
 186   2                      }
 187   1              SetREST(0);
 188   1              }


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