📄 mcs_x51lib.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 + -