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

📄 spi.c

📁 spi协议
💻 C
字号:
/********************** SPI基本操作函数******************************
[文件名] SPI.c+SPI.H+ASMselect.h
[版本] TV.1
[创建] 阿春x
[修正] 阿春x
[最后修改时间] 	2006.04.21 16:30
[验 正 时  间]		2006.04.24 15:30
[功能说明]读取或写入8位或<=16位data
***************************************************************************/
#include "ASMselect.h"
#if ASMSPI
#include "reg51x.h"
#include "tab.h"
//#include <stdio.h>
//#include <intrins.h>
//#include "ioprot.h"
//---------------------
sbit DO= P1^1;//if DO,DI short,DO=P1^1;
sbit DI=P1^1;
sbit SK=P1^2;
//====================================SPI=================
SPI_write_8bit(uchar txdata){
	uchar i;
	SK=0;
	for(i=0;i<8;i++){
			if((txdata&0X01)!=0){
				DI=1;
				SK=1;/*DELAY_X20us(1);*/
				}
			else {
				DI=0;
				SK=1;/*DELAY_X20us(1);*/
				}
		SK=0;/*DELAY_X20us(1);*/
		txdata>>=1;
		}
	DO=1;
	}
//------------------
uchar SPI_read_8bit(){
	uchar  rxdata=0;
	uchar i;	
	SK=0;	
	for(i=0;i<8;i++){
		rxdata>>=1;
		if(DO)rxdata|=0X80;		
		SK=1;/*DELAY_X20us(1);*/		
		SK=0;/*DELAY_X20us(1);*/		
		}	
	return(rxdata);
	}
//==============================================
#if ASMSPI_write_nbit
SPI_write_nbit(uint txdata,uchar txcount){
	uchar i;
	for(i=0;i<txcount;i++){
			if((txdata&0X0001)!=0){
				DI=1;
				SK=1;/*DELAY_X20us(1);*/
				}
			else {
				DI=0;
				SK=1;/*DELAY_X20us(1);*/
				}
		SK=0;/*DELAY_X20us(1);*/
		txdata>>=1;
		}
	}
#endif
//----------------------------
#if ASMSPI_read_nbit
uint SPI_read_nbit(uchar rxcount){
	uint  rxdata=0;
	uchar i;
	SK=0;
	for(i=0;i<16;i++){
		if(i<rxcount){
			if(DO)rxdata&=0X8000;		
			SK=1;/*DELAY_X20us(1);*/			
			SK=0;/*DELAY_X20us(1);*/		
			}	
		rxdata>>=1;
		}
	return(rxdata);
	}
#endif
//==========================================
#endif

⌨️ 快捷键说明

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