软模拟SPI(高分相赠)

sunchaoyang1 2005-04-08 04:55:22
本人做毕业设计要求用80C51。
需要与nRF905通信(是SPI接口的)
80C51没有SPI接口,固我想设计一个简单的软SPI(用P口(P3.0,p3.1有它用)的几个引脚模拟SPI)
给位大虾帮---------------忙--------------想想
提供原程序最好。(C51)
...全文
315 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xichen 2005-04-11
  • 打赏
  • 举报
回复
/*******************************************************************************
模块名称: spi.h
模块说明: c51单片机的i/o模拟spi操作

创建时间: 2005/03/09
创建者: xichen



********************************************************************************/

#ifndef SPI_H
#define SPI_H



sbit SPIS_N = P2^1;
sbit SPIC = P2^3;
sbit SPID = P2^2;
sbit SPIQ = P2^4;

extern void spi_reset();
extern void spi_write(unsigned char spi_bValue);
extern unsigned char spi_read();


#endif
/*******************************************************************************
模块名称: spi.c
模块说明: c51单片机的i/o模拟spi操作

创建时间: 2005/03/09
创建者: xichen

********************************************************************************/

#include "includes.h"

#define set_spi_cs() SPIS_N =1
#define clr_spi_cs() SPIS_N =0
#define set_spi_clk() SPIC =1
#define clr_spi_clk() SPIC =0
#define set_spi_di() SPID =1
#define clr_spi_di() SPID =0
#define read_spi_do() SPIQ



//------------------------------------------
void spi_reset()
{
set_spi_cs();
}
//-----------------------------------------
void spi_write(unsigned char spi_bValue)
{
unsigned char no;

clr_spi_cs();

for (no=0;no<8;no++)
{
clr_spi_clk();

if ((spi_bValue &0x80)==0x80)
set_spi_di();
else
clr_spi_di();

set_spi_clk();

spi_bValue = (spi_bValue <<1);
}
}
//----------------------------------------------
unsigned char spi_read()
{
unsigned char no,spi_bValue;

clr_spi_cs();

for (no=0;no<8;no++)
{
clr_spi_clk();

spi_bValue = (spi_bValue <<1);

set_spi_clk();

if (read_spi_do() ==1)
spi_bValue |=0x01;
else
spi_bValue &=~0x01;

}

return spi_bValue;
}


sunchaoyang1 2005-04-09
  • 打赏
  • 举报
回复
我知道好做的呀,不过有大虾帮忙,就能那到一个可靠点的程序了
zys0001 2005-04-09
  • 打赏
  • 举报
回复
SPI比I2C好做,楼主仔细看一下时序,应该能做的出来的,要看清楚芯片的传输速度
xichen 2005-04-08
  • 打赏
  • 举报
回复
星期一给你,现在在家里
suyun9329 2005-04-08
  • 打赏
  • 举报
回复
做一个??网上有啊,找一个方便点
icesnows 2005-04-08
  • 打赏
  • 举报
回复
SPI接口应该是比较简单的,比较好做的吧!你要搞清楚它的时序

27,370

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧