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

📄 ms_rwreg.lst

📁 MST720-DEMO程序
💻 LST
字号:
C51 COMPILER V7.50   MS_RWREG                                                              03/18/2008 22:29:09 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MS_RWREG
OBJECT MODULE PLACED IN ..\1out\Ms_RWreg.obj
COMPILER INVOKED BY: D:\设计软件\Keil\C51\BIN\C51.EXE ..\SCALER\Ms_RWreg.c BROWSE INCDIR(..\INC\;..\PANEL\;..\UI\;..\OPT
                    -ION\;..\SCALER\DSP\) DEFINE(MCU_TYPE_SEL=0) DEBUG OBJECTEXTEND PRINT(..\1out\Ms_RWreg.lst) OBJECT(..\1out\Ms_RWreg.obj)

line level    source

   1          /******************************************************************************
   2           Copyright (c) 2005 MStar Semiconductor, Inc.
   3           All rights reserved.
   4          
   5           [Module Name]: Ms_RWreg.c
   6           [Date]:        13-Jan-2005
   7           [Comment]:
   8             Mstar IC access functions.
   9           [Reversion History]:
  10          *******************************************************************************/
  11          #define _MS_RWREG_C_
  12          
  13          /********************
  14          * INCLUDE FILES     *
  15          *********************/
  16          #include <intrins.h>
  17          #include "Project.h"
  18          #include "Mcu_reg.h"
  19          #include "Ms_RWreg.h"
  20          #include "Ms7X_reg.h"
  21          #include "debug.h"
  22          #include "Mcu.h"//kevin
  23          #include "Global.h"//kevin
  24          
  25          #define Delay1us()      _nop_()
  26          
  27          /**********************
  28          * FUNCTION PROTOTYPES *
  29          ***********************/
  30          #if ( BUS_TYPE_SEL == DIRECT_BUS )
  31          #define MS_REG(addr)            (((unsigned char xdata*)0)[addr])
  32          #endif
  33          
  34          //////////////////////////////////////////////////////////////////////////////
  35          // <Name>: msBusInitial
  36          //
  37          // <Description>: MST I/O bus initialize.
  38          //////////////////////////////////////////////////////////////////////////////
  39          
  40          #if ( BUS_TYPE_SEL == SERIAL_BUS )
              
              void mstBusInitial(void)
              {
                  bCS_PIN = 0;
                  bSCL_PIN = 1;
                  bSDA_PIN = 1;
              }
              //////////////////////////////////////////////////////////////
              // MST I/O control start.(serial bus)
              //
              //                 ________________
              //  CS  ____/
              //                        _____
              //  SCL ________/        \______
C51 COMPILER V7.50   MS_RWREG                                                              03/18/2008 22:29:09 PAGE 2   

              //                   __________
              //  SDA _____/                 \____
              //                  \__________/
              //////////////////////////////////////////////////////////////
              void mstSPIStart(BIT bSelWrRd)
              {
                      //disable EA bit
                      
                      SET_SPI_CS(_HIGH);
                      SET_SPI_SCL(_LOW);
              
                      if (bSelWrRd == SPI_READ)       // read bit
                              SET_SPI_SDA(_HIGH);
                      else                                            // write bit
                              SET_SPI_SDA(_LOW);
              
                      SET_SPI_SCL(_HIGH);
                      SET_SPI_SCL(_LOW);
              
                      // release EA bit
              }
              
              //////////////////////////////////////////////////////////////
              // Receive byte from MST chip.(serial bus)
              //
              // Arguments: bLast - last one bit
              //           (MS_IS_LAST_BIT/MS_NON_LAST_BIT)
              // Return value: receive byte
              //////////////////////////////////////////////////////////////
              BYTE mstSPIReceiveByte(BOOL bLast)
              {
                      BYTE ucIndex; // loop index
                      BYTE ucBuf = 0x00; // byte buffer
              
                      // disable all interrupt
              
                      SET_SPI_SDA(_HIGH); // preset SDA high
                      
                      for (ucIndex=7; ucIndex!=0; ucIndex--)
                      {
                              SET_SPI_SCL(_HIGH);
                              Delay1us();
              
                              ucBuf <<= 1; // next
                              
                              if (bSDA_PIN == _HIGH) // check SDA
                                      ucBuf |= _BIT0; // set bit0
              
                              SET_SPI_SCL(_LOW);
                      }
              
                      if (bLast == MS_IS_LAST_BIT) // last one
                              SET_SPI_CS(_LOW);
              
                      // last bit
                      SET_SPI_SCL(_HIGH);
                      Delay1us();
              
                      ucBuf <<= 1; // next
                      
                      if (bSDA_PIN == _HIGH) // check SDA
                              ucBuf |= _BIT0; // set bit0
C51 COMPILER V7.50   MS_RWREG                                                              03/18/2008 22:29:09 PAGE 3   

              
                      SET_SPI_SCL(_LOW);
              
                      if (bLast == MS_IS_LAST_BIT) // last one
                      {
                              SET_SPI_SDA(_HIGH);
                              SET_SPI_SCL(_HIGH);
                      }
              
                      if ((bit)(g_ucSystemFlag & ENTER_SPI_DEBUG) == TRUE)//20050920
                              SET_SPI_CS(_HIGH);      
              
                      // release EA bit
                      return ucBuf;
              }
              
              //////////////////////////////////////////////////////////////
              // Send byte to MST chip.(serial bus)
              //
              // Arguments: ucVal - output byte
              //            bLast - last one bit
              //            (MS_IS_LAST_BIT/MS_NON_LAST_BIT)
              //////////////////////////////////////////////////////////////
              void mstSPISendByte(BYTE ucVal, BOOL bLast)
              {
                      BYTE ucIndex; // loop index
              
                      // disable all interrupt
              
                      for (ucIndex=7; ucIndex!=0; ucIndex--)
                      {
                              SET_SPI_SDA((bit)(ucVal & _BIT7));
                              ucVal <<= 1; // next
              
                              SET_SPI_SCL(_HIGH); // clock
                              Delay1us();
                              SET_SPI_SCL(_LOW);
                      }
              
                      if (bLast == MS_IS_LAST_BIT) // last one
                              SET_SPI_CS(_LOW);
              
                      // last bit
                      SET_SPI_SDA((bit)(ucVal & _BIT7));
                      Delay1us();
              
                      SET_SPI_SCL(_HIGH); // clock
                      Delay1us();
                      SET_SPI_SCL(_LOW);
              
                      if (bLast == MS_IS_LAST_BIT) // last one
                      {
                              SET_SPI_SDA(_HIGH);
                              SET_SPI_SCL(_HIGH);
                      }
              
                      if ((bit)(g_ucSystemFlag & ENTER_SPI_DEBUG) == TRUE)//20050920
                              SET_SPI_CS(_HIGH);      
              
                      // release EA bit
              }
              #endif
C51 COMPILER V7.50   MS_RWREG                                                              03/18/2008 22:29:09 PAGE 4   

 179          
 180          BYTE mstReadByte(BYTE ucAddr)
 181          {
 182   1      #if (BUS_TYPE_SEL == DIRECT_BUS)
 183   1              return *((BYTE pdata*) ucAddr);
 184   1      #elif ( BUS_TYPE_SEL == SERIAL_BUS )
                  mstSPIStart(SPI_READ); // read command
                  mstSPISendByte(ucAddr, MS_NON_LAST_BIT); // register index
                  
                  return mstSPIReceiveByte(MS_IS_LAST_BIT); // read register data
              #endif
 190   1      }
 191          
 192          WORD mstReadWord(BYTE ucAddr)
 193          {
 194   1              WORD uwValue;
 195   1      
 196   1      #if (BUS_TYPE_SEL == DIRECT_BUS)
 197   1              uwValue = mstReadByte(ucAddr);
 198   1              uwValue = (uwValue << 8) |mstReadByte(ucAddr-1);
 199   1      
 200   1              return uwValue;
 201   1      #elif ( BUS_TYPE_SEL == SERIAL_BUS )
                      uwValue = mstReadByte(ucAddr);
                      uwValue = (uwValue * 0x100) + mstReadByte(ucAddr - 1);
              
                      return uwValue;
              #endif
 207   1      }
 208          
 209          void mstWriteByte(BYTE ucAddr, BYTE ucValue)
 210          {
 211   1      #if (BUS_TYPE_SEL == DIRECT_BUS)
 212   1              *((BYTE pdata*) ucAddr) = ucValue;
 213   1      #elif ( BUS_TYPE_SEL == SERIAL_BUS )
                  mstSPIStart(SPI_WRITE); // write command
                  mstSPISendByte(ucAddr, MS_NON_LAST_BIT); // register index
                  mstSPISendByte(ucValue, MS_IS_LAST_BIT);
              #endif
 218   1      
 219   1      }
 220          
 221          void mstWriteWord(BYTE ucAddr, WORD uwValue)
 222          {
 223   1      #if (BUS_TYPE_SEL == DIRECT_BUS)
 224   1              mstWriteByte(ucAddr - 1, uwValue&0xFF);
 225   1              mstWriteByte(ucAddr, uwValue>>8);
 226   1      #elif ( BUS_TYPE_SEL == SERIAL_BUS )
                      mstWriteByte(ucAddr -1, (BYTE)uwValue);
                      mstWriteByte(ucAddr, (BYTE)(uwValue / 0x100));
              #endif
 230   1      }
 231          
 232          void mstWriteData(BYTE addr, BYTE code *tbl, WORD count, bit inc)
 233          {
 234   1              count++;
 235   1              while (count--)
 236   1              {
 237   2                      mstWriteByte(addr, *(tbl++));
 238   2                      if(inc)
 239   2                      addr++;
 240   2              }
C51 COMPILER V7.50   MS_RWREG                                                              03/18/2008 22:29:09 PAGE 5   

 241   1      }
 242          
 243          void mstWriteDataTable(BYTE code *s)
 244          {
 245   1              BYTE index, cnt;
 246   1      
 247   1              while ((cnt = *s++) != -1) 
 248   1              {
 249   2                      index = *s++;
 250   2                      mstWriteData(index, s, cnt-1, 1);
 251   2                      s += cnt;
 252   2              }
 253   1      
 254   1      }
 255          


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