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

📄 spird.c

📁 FM1702SL.rar
💻 C
字号:

#include <reg52.h>
#include <string.h>
#include <stdio.h>
#include <absacc.h>
#include <intrins.h>
#include "FM1702.h"

sbit RF_NSS	=	P1^4;
sbit RF_MISO	=	P1^3;
sbit RF_MOSI	=	P1^2;
sbit RF_SCK	=	P1^1;

sbit RF_RST  	=   P3^5;	//由高变低时启动内部复位程序	

sbit CARD_LED	=	P3^3;
sbit SPEAKER    =   P3^4; 

sbit LCD_CS =	P2^4;
sbit LCD_RD =	P2^5;
sbit LCD_WR =	P2^6;
sbit LCD_DATA =	P2^7;

sfr P4 = 0xD8;
sbit key	= P4^3;


/****************************************************************/
/*名称: SPIRead */
/*功能: 该函数根据给定的地址读取FM1702SL的寄存器*/
/*输入: 寄存器地址<SpiAddress>, 读出值存放首地址<ReadBuf>*/
/*输出: 寄存器值*/
/****************************************************************/
unsigned char SPIRead(unsigned char SpiAddress)
{
	unsigned char data i,k,rdata,temp;
	rdata=0;
	SpiAddress=_crol_(SpiAddress,1);
	SpiAddress=SpiAddress | 0x80;
	RF_SCK=0;
	RF_NSS=0;

//Send SpiAddress;
	for (i=0;i<8;i++)
	{
		temp=SpiAddress&0x80;
		if (temp==0x80)	RF_MOSI=1;
		else RF_MOSI=0;
		RF_SCK=1;
		SpiAddress=_crol_(SpiAddress,1);
		RF_SCK=0;
	}
//Send SpiAddress;
//Receive data

		for (k=0;k<8;k++)
		{
			RF_SCK=1;
			CY=RF_MISO;
			if (CY) rdata+=1;
			rdata=_crol_(rdata,1);
			RF_SCK=0;
			_nop_();
		}


	RF_NSS=1;		
	CY=0;
	return(rdata);
}
/****************************************************************/
/*名称: SPIWrite */
/*功能: 该函数根据给定的地址写入FM1702SL的寄存器*/
/*输入: 寄存器地址<SpiAddress>,要写入的字节数<WriteCount> */
/*输出: N/A*/
/****************************************************************/
void SPIWrite(unsigned char idata SpiAddress,unsigned char idata SpiData)
{
	unsigned char data i,k,temp;

//	temp=SpiAddress&0xc0;
//	if (temp!=0)
//	{
//		CY=1;
//		return;
//	}
	SpiAddress=_crol_(SpiAddress,1);
	SpiAddress=SpiAddress &0x7e;
	RF_SCK=0;
	RF_NSS=0; 

//Send SpiAddress
	for (i=0;i<8;i++)
	{
		temp=SpiAddress&0x80;
		if (temp==0x80)	RF_MOSI=1;
		else RF_MOSI=0;
		RF_SCK=1;
		SpiAddress=_crol_(SpiAddress,1);
		RF_SCK=0;
	}
//Send SpiAddress
//	Send data;

		for(k=0;k<8;k++)
		{
			temp=SpiData&0x80;
			if (temp==0x80)	RF_MOSI=1;
			else RF_MOSI=0;
			RF_SCK=1;
			SpiData=_crol_(SpiData,1);
			RF_SCK=0;
		}

//Send data;
	RF_NSS=1;
	CY=0;
//	return;
}

⌨️ 快捷键说明

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