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

📄 mcs_x51lib.c

📁 stc头文件
💻 C
字号:
/****************************************************************
//MCS-51单片机自定义库函数。
//用户可以添加自己的操作

//create by changshengwuji 
//email: netspider@163.com
//qq:    450353168
//2006.05.03
****************************************************************/
#include<intrins.h>
#include "../inc/mcs_x51.h"
#include "../inc/hardmap.h"
/*延时机器周期为:8+x*7 */
/* STC89C52,工程设置为8级优化,small ram,large rom。速度优先*/
/* 经试验,优化等级不影响该函数的定时时间*/
void delay_7clk(UINT8 x)
{
	while(x--);
}

/* STC89C52,工程设置为8级优化,small ram,large rom。速度优先*/ 
/* 延时函数,参数为16位整数*/
/* 延时机器周期为12+10*x   */
void delay_10clk(UINT16 x)
{
	while(x--);
}


//从串口读取一个字节
UINT8 uart_getc()
{
	while(!RI);
	UART_RIIF_CLR;
	return(rd_uart());
}

//利用串口输出一个字节
void uart_putc(UINT8 x)
{
	wr_uart(x);
	while(!TI);
	UART_TIIF_CLR;
}	

/**********************************************************
SPI function
**********************************************************/														   
UINT8 spi_getb()   			//get a byte from spi bus
{
UINT8 	i,val;
	SCK = 0;
	MOSI = 0;
	val = 0;
	for(i = 0; i< 8 ;i++)
	{
		SCK = 1;
		val = val << 1;
		if(MISO)
			val |= 0x01;		
		SCK = 0;
	}
	return(val);
}
/***************************************************************

***************************************************************/
void spi_putb(UINT8 x)		 //put a byte to spi bus
{
UINT8 i;
	for(i = 0;i < 8 ;i++)
	{
		SCK = 0;
		//if(((x>>(7-i)) & 0x01) == 1)
		if((x& (1 << (7-i))) == 1)
			MOSI = 1;
		else
			MOSI = 0;
		_nop_;
		SCK = 1;
		_nop_;
		_nop_;
		_nop_;
	}
	SCK = 0;
	MOSI = 0;
}			
/***************************************************************
***************************************************************/
void spi_putw(UINT16 x)
{
UINT8 i;
	SPI_EN = 0;
	i = x>>8;
	spi_putb(i);
	i = x & 0x00ff;
	spi_putb(i);
	SPI_EN = 1;
}
/******************************************************************/

/******************************************************************
硬件SPI接口函数
向SPI端口写一个字。
*******************************************************************/
#if defined(STC_12X2052X)
	void wrw_spi(UINT16 x)	 
	{
		SPI_EN = 0;
		SPIF_CLR;
		wrb_spi(x>>8);
		while(SPIF == 0);	
		SPIF_CLR;
		wrb_spi(x & 0x00ff);
		while(SPIF == 0);
		SPIF_CLR;
		SPI_EN = 1;
	}

#endif

⌨️ 快捷键说明

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