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

📄 s8051.c.svn-base

📁 si4432官方的程序
💻 SVN-BASE
字号:
/*** ============================================================================**** FILE**  S8051.c**** DESCRIPTION**  Contains all the low level, 8051 dependent functions		    **** CREATED**  Silicon Laboratories Hungary Ltd**** COPYRIGHT**  Copyright 2008 Silicon Laboratories, Inc.  **	http://www.silabs.com**** ============================================================================*/#include "S8051.h"/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  +  + FUNCTION NAME:  void SetHwMasterSpi(void)  +  + DESCRIPTION:    initialize the HW SPI   +  +	INPUT:			None  +  + RETURN:         None  +  + NOTES:          None  +  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/void SetHwMasterSpi(void){	   SPI1CFG   = 0x40;					//Master SPI, CKPHA=0, CKPOL=0   SPI1CN    = 0x00;					//3-wire Single Master, SPI enabled   SPI1CKR   = (SYSCLK/(2*SPI_CLOCK))-1;   SPI1EN 	 = 1;                     	// Enable SPI interrupt   RF_NSEL_PIN = 1;}/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  +  + FUNCTION NAME:  void delay(uint8 delay)  +  + DESCRIPTION:    wait    +  +	INPUT:			length of the delay (1 ... 255)  +  + RETURN:         None  +  + NOTES:          None  +  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/void delay_ms(uint8 delay){	xdata uint8  j;	xdata uint16 i;	if( delay == 0 )	{		return;	}	for(j=0;j<delay;j++)	{		for(i=0;i<2000;i++);	}}/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  +  + FUNCTION NAME:  void Timer2Init(void)  +  + DESCRIPTION:    initialize the Timer2    +  +	INPUT:			None  +  + RETURN:         None  +  + NOTES:          None  +  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/void Timer2Init(void)					//8051 Timer2 init					{   	CKCON &= ~0x60;                     // Timer2 uses SYSCLK/12   	TMR2CN &= ~0x01;  	TMR2CN = 0x04;                      // Enable Timer2 in auto-reload mode  	                            		// Timer2 interrupt enabled		TMR2L = 0x1A;								TMR2RLL = 0x1A;	TMR2H = 0x0A;	TMR2RLH = 0x0A;	ET2 = 1;}/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  +  + FUNCTION NAME:  uint8 SpiReadWrite(uint8 data)  +  + DESCRIPTION:    sends and read 8 length data through the SPI port  +  +	INPUT:			data   +  + RETURN:         received byte  +  + NOTES:          it doesn't control the nSEL pin  +  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/uint8 SpiReadWrite(uint8 spi_in){	SPI1DAT = spi_in;					//write data into the SPI register	while( SPIF1 == 0);					//wait for sending the data	SPIF1 = 0;							//clear interrupt flag		return SPI1DAT;						//read received bytes}/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  +  + FUNCTION NAME:  void SpiWriteAddressData(uint8 address, uint8 data1)  +  + DESCRIPTION:    sends 16 length data through the SPI port (address and data)  +  +	INPUT:			address - register address  +					data 	- 8bit data   +  + RETURN:         None  +  + NOTES:          It controls the nSEL pin  +  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/void SpiWriteAddressData(uint8 address, uint8 data1){	RF_NSEL_PIN = 0;	SPI1DAT = address;					//write data into the SPI register	while( SPIF1 == 0);					//wait for sending the data	SPIF1 = 0;	SPI1DAT = data1;					//write data into the SPI register	while( SPIF1 == 0);					//wait for sending the data	SPIF1 = 0;	RF_NSEL_PIN = 1;}/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  +  + FUNCTION NAME:  uint16 SpiReadWriteWord(uint16 spi_in)  +  + DESCRIPTION:    sends and read 16 length data through the SPI port  +  +	INPUT:			data   +  + RETURN:         received word  +  + NOTES:          it controls the nSEL pin  +  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/uint16 SpiReadWriteWord(uint16 spi_in){	xdata uint16 temp16;		RF_NSEL_PIN = 0;							temp16 = (uint16) (SpiReadWrite( (uint8)((spi_in & 0xFF00) >> 8) ));	temp16 <<= 8;	temp16 += (uint16) (SpiReadWrite( (uint8)(spi_in & 0x00FF) ));	RF_NSEL_PIN = 1;		return temp16;}

⌨️ 快捷键说明

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