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

📄 config.c

📁 用于Slave I2C得读写,此代码针对特定得芯片,但对其他得芯片也有借鉴作用.
💻 C
字号:
/*
**********************************************************************************************
* Project:	T8Lib
* File:		ezT8.c
* Contents: 
*           The ezT8 config  c file 
*           for I2c or spi software mode 
* $Date: 10/13/05    Michal    T8R01LIB v0.1  initial
* $Date: 11/29/05    Michal    T8R01LIB v0.2  test finish  both 51 and MCF5249
* $Date: 11/30/05    Michal    T8R01LIB v0.3  make lib OK  on  MCF5249
* $Date: 12/01/05    Michal    T8R01LIB v0.4  Add HW_IIC ,HW_SPI macro	
* $Date: 12/02/05    Michal    T8R01LIB v0.5  Add  function below 
*                 static void DoXX(BYTE* out ,BYTE* in,BYTE len,BOOL mode)
*                 static BOOL DoComunication(BYTE* array, BYTE len,BOOL mode)
*
*
*                Moidfy some *Cmd Fuction and Reply() function
* $Date: 12/05/05    Michal    T8R02LIB v0.1  Add errcode1 to identify T8 off i2c bus state 
* $Date: 12/29/05 Michal T8R02LIB v0.2
	             Modify InitezT8(BOOL mode ) to BOOL  InitezT8Lib(BOOL ComMod,BYTE I2cSlvAdr,BOOL I2cIsHigh,BYTE SpiCLkMod,WORD SpiRate,BYTE *key);
                        void I2c_Init( ); void I2c_Sel( BYTE  SlvAdr, BOOL isHigh)  to void I2c_Init(BYTE  SlvAdr, BOOL isHigh);
                        void  Spi_Init();BOOL  Spi_ClkSel(BYTE mode, WORD rate);  To void  Spi_Init(BYTE mode, WORD rate);
                 Delete void SpiClkSelOpr(BYTE mode, WORD rate) ;
                        void I2c_Sel( BYTE  SlvAdr, BOOL isHigh);  
                        void SetXXKey(BYTE* key); 
* $Date: 12/29/05 Michal T8R02LIB v0.5 test communiction at 400khz speed  is OK  
* Copyright (c) 2005 Fameg, Inc. All rights reserved
***********************************************************************************************
*/
 


#include "ezT8.h"

/*#if (SW_IIC||SW_SPI) 
void Delay_0_5us(unsigned char cnt)
{      
      unsigned char ct=50; 
	while(cnt--)
	{
	    	while(ct--)
		asm("nop");
		ct=50;	
		
			
	}		
	
}

	void  WritePinSCL(){MBAR2_GPIO_OUT  =  MBAR2_GPIO_OUT | 0x00000008;	}

	void ClearPinSCL(){MBAR2_GPIO_OUT  =  MBAR2_GPIO_OUT & 0xFFFFFFF7;}
		
	void  setSDAin(){MBAR2_GPIO1_ENABLE = MBAR2_GPIO1_ENABLE & 0xFF7FFFFF;} 
	void  setSDAout(){MBAR2_GPIO1_ENABLE = MBAR2_GPIO1_ENABLE | 0x00800000;} 

	void WritePinSDA(){MBAR2_GPIO1_OUT  =  MBAR2_GPIO1_OUT | 0x00800000;}
	void ClearPinSDA(){MBAR2_GPIO1_OUT  =  MBAR2_GPIO1_OUT & 0xFF7FFFFF;}

	BOOL ReadPinSDA(){return((MBAR2_GPIO1_READ & 0x00800000) >> 23);}	
	void InitReadAck(){MBAR2_GPIO1_ENABLE = MBAR2_GPIO1_ENABLE & 0xFF7FFFFF;}

				
	void WritePinSS_N(){MBAR2_GPIO_OUT = MBAR2_GPIO_OUT | 0x40000000;};
	void ClearPinSS_N() {MBAR2_GPIO_OUT = MBAR2_GPIO_OUT & 0xBFFFFFFF;}

//  void  WritePinSDOUT(b)  
//  {
//      if (b) vSetGpioWriteBit(27) ;
//		else vClearGpioWriteBit(27);
//  }

   BOOL  ReadPinSDOUT()  { return((MBAR2_GPIO_READ & 0x08000000) >> 27) ;  } 
#endif*/

BYTE gCnt=0;

extern void vEnableIsrs()
{
   EA=1;
}

extern  void vDisableIsrs()
{
   EA=0;
}
void  Delay4_2ms(BYTE nCnt)
{
    
     gCnt=nCnt;
	  TMOD=0x01; 
	  TH0 = 0xCE;
      TL0 = 0xE8;
	  ET0=1;
      EA=1;
      TR0=1;

     while(gCnt>0) ;
     TR0=0;
}

//----------------------------------------------------------------------------
// Timeout every 10 ms
//----------------------------------------------------------------------------
void Timer0() interrupt 1 using 3
{
  // Restore the counter to 10 ms
  TH0 = 0xCE;
  TL0 = 0xE8;

  // Inc the system tick
  if (gCnt)
    gCnt --;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -