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

📄 spi.c

📁 用c51驱动fm1702sl
💻 C
字号:
#include <string.h>
#include <stdio.h>
#include <absacc.h>
#include <intrins.h>

#include "FM1702.h"
#include "reg52.h"

void delay1(uchar dlength)
{ 
    uchar i;
    for (i=0;i<dlength;i++)
    {
       _nop_();
    }
}

unsigned char rev(uchar tem)
{
    uchar idata i;
	unsigned char idata var=0,var_snt=0;
	
	var=0;
	for (i=0;i<8;i++)          // 8位字节带进位左移
	{ 
		var_snt=tem&0x80;            // 选择高位
		if (var_snt==0x80) si=1;     // 输出高位
		else si=0;	
		tem<<=1;	
		var<<=1;
		CY=so;
	    if (CY==1) 
			var+=1;         // 带进位左移
		sck=1;                 // 产生SCK脉冲	
		delay1(1);		
		sck=0;	 
    }	
	return(var);          // 返回
} 

void Send(unsigned char var) 

{ 
	unsigned char data i,tem;
	 
	for (i=0;i<8;i++)          		// 8位字节输出
	{
		delay1(1);	                  // 使SCK为低电平
		tem=var&0x80;            // 选择高位
		if (tem==0x80) si=1;     // 输出高位
      		else si=0;
      		delay1(1);
		sck=1;                   // 使SCK为1
		var<<=1;	
		delay1(1);	
		sck=0; 							// 左移1位
	}  
}                  

uchar read_reg(uchar idata SpiAddress)
{
	uchar idata rdata;
	SpiAddress=SpiAddress<<1;
	SpiAddress=SpiAddress | 0x80; 
	spi_cs=0;	
	Send(SpiAddress);
	rdata=rev(0);
	spi_cs=1;		
	return(rdata);
}

#if 0
void read_mult_dat(uchar idata SpiAddress,uchar *dat,uchar n )
{
	uchar i;
	SpiAddress=SpiAddress<<1;
	SpiAddress=SpiAddress | 0x80; 
	spi_cs=0;		
	Send(SpiAddress);
	for(i=0;i<n-1;i++)
		dat[i]=rev(SpiAddress);
	dat[n-1]=rev(0);		
	spi_cs=1;		
}

void write_mult_dat(uchar idata SpiAddress,uchar *dat,uchar n)
{
	uchar i;
	SpiAddress=SpiAddress<<1;
	SpiAddress=SpiAddress &0x7f;
	spi_cs=0; 
	so=0;
	Send(SpiAddress);	
	for(i=0;i<n;i++)
	{
		Send(dat[i]);
	}
	spi_cs=1;	
}
#endif

void write_reg(uchar idata SpiAddress,uchar dat)
{
	SpiAddress=SpiAddress<<1;
	SpiAddress=SpiAddress &0x7f;
	spi_cs=0; 
	so=0;
	Send(SpiAddress);		
	Send(dat);	
	spi_cs=1;
}

⌨️ 快捷键说明

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