51单片机io位与 c语言,【51单片机】普通I/O口模拟SPI口C语言程序
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
89C51系列单片机都不带SPI口,所在在这种情况下,我们可以模拟SPI口来现实我们要的功能,程序如下:
//-----------------------函数声明,变量定义------------
#include
#include
sbit SCK=P1^0; // 将p1.0口模拟时钟输出
sbit MOSI=P1^1; // 将p1.1口模拟主机输出
sbit MISO=P1^2; // 将p1.1口模拟主机输入
sbit SS1=P1^3; // 将p1.1口模拟片选
#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
//-------------------------------------------------------------------------------// 函数名称: SPISendByte
// 入口参数: ch
// 函数功能: 发送一个字节
//-------------------------------------------------------------------------------
void SPISendByte(unsigned char ch)
{
unsigned char idata n=8; // 向SDA上发送一位数据字节,共八位
SCK = 1 ; //时钟置高
SS1 = 0 ; //选择从机 while(n--)
{
delayNOP();
SCK = 0 ; //时钟置低
if((ch&0x80) == 0x80) // 若要发送的数据最高位为1则发送位1
{
MOSI = 1; // 传送位1
}
else
{
MOSI = 0; // 否则传送位0
}
delayNOP();
ch = ch<<1; // 数据左移一位
SCK = 1 ; //时钟置高
}
}
//-------------------------------------------------------------------------------
// 函数名称: SPIreceiveByte
// 返回接收的数据
// 函数功能: 接收一字节子程序
//-------------------------------------------------------------------------------
unsigned char SPIreceiveByte()
{
unsigned char idata n=8; // 从MISO线上读取一上数据字节,共八位
unsigned char tdata;
SCK = 1; //时钟为高
SS1 = 0; //选择从机
while(n--)
{
delayNOP();
SCK = 0; //时钟为低
delayNOP();
tdata = tdata<<1; // 左移一位,或_crol_(temp,1)
if(MISO == 1)
tdata = tdata|0x01; // 若接收到的位为1,则数据的最后一位置1
else
tdata = tdata&0xfe; // 否则数据的最后一位置0
SCK=1;
}
return(tdata);
}
//-------------------------------------------------------------------------------
// 函数名称: SPIsend_receiveByte
// 入口参数: ch
// 返回接收的数据
// 函数功能:串行输入/输出子程序
//-------------------------------------------------------------------------------
unsigned char SPIsend_receiveByte(unsigned char ch)
{
unsigned char idata n=8; // 从MISO线上读取一上数据字节,共八位
unsigned char tdata;
SCK = 1; //时钟为高
SS1 = 0; //选择从机
while(n--)
{
delayNOP();
SCK = 0; //时钟为低
delayNOP();
{
tdata = tdata<<1; // 左移一位,或_crol_(temp,1)
if(MISO == 1)
tdata = tdata|0x01; // 若接收到的位为1,则数据的最后一位置1
else
tdata = tdata&0xfe; // 否则数据的最后一位置0
}
{
if((ch&0x80) == 0x80) // 若要发送的数据最高位为1则发送位1
{
MOSI = 1; // 传送位1
}
else
{
MOSI = 0; // 否则传送位0
}
ch = ch<<1; // 数据左移一位
}
SCK=1;
}
return(tdata);
}
51单片机io位与 c语言,【51单片机】普通I/O口模拟SPI口C语言程序相关推荐
- 51单片机扩展io口实验c语言,【51单片机】普通I/O口模拟SPI口C语言程序
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 89C51系列单片机都不带SPI口,所在在这种情况下,我们可以模拟SPI口来现实我们要的功能,程序如下: //---------------------- ...
- io口输入输出实验程序c语言,【51单片机】普通I/O口模拟SPI口C语言程序
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 89C51系列单片机都不带SPI口,所在在这种情况下,我们可以模拟SPI口来现实我们要的功能,程序如下: //---------------------- ...
- c语言spi发送12位数据,【51单片机】普通I/O口模拟SPI口C语言程序
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 89C51系列单片机都不带SPI口,所在在这种情况下,我们可以模拟SPI口来现实我们要的功能,程序如下: //---------------------- ...
- 单片机 c语言 定义i o,【51单片机】普通I/O口模拟SPI口C语言程序
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 89C51系列单片机都不带SPI口,所在在这种情况下,我们可以模拟SPI口来现实我们要的功能,程序如下: //---------------------- ...
- c语言 单片机模拟,【51单片机】普通I/O口模拟SPI口C语言程序
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 89C51系列单片机都不带SPI口,所在在这种情况下,我们可以模拟SPI口来现实我们要的功能,程序如下: //---------------------- ...
- io口模拟spi,stm32f103与MS5611基于spi总线的温度压力高度数据读取
以下文件为源文件 /** -----------------------MS5611驱动 && IO口模拟SPI驱动------------------------- ******** ...
- STM32+MAX6675利用io口模拟SPI获取实时温度数据程序及代码
STM32+MAX6675利用io口模拟SPI获取实时温度数据程序及代码 本文采用的芯片为STM32F103RCT6 温度芯片为MAX6675 因为芯片的spi口只有3个,有部分需要外接W25Q128 ...
- STC15单片机读写大容量SD卡(IO口模拟SPI模式)
使用的芯片是STC15系列的IAP15F2K61S2,开发板是51的xl2000.把芯片座上的51芯片拔掉换成STC的,混合模式.(配置够低吧) 源码由51开发板例程的实验26修改而来. 浏览了网上的 ...
- 单片机IO口模拟SPI四种模式的程序
2013年09月21日 10:00:02 zyboy2000 阅读数:23924 #include "iom8535v.h" #define _CPOL 1 #define _CP ...
最新文章
- WPF纯手工两步打造图片切割工具(一)
- Missing artifact com.github.pagehelper:pagehelper:jar:3.4.2-fix的解决方法
- python 折线图x时间_在Python Bokeh折线图中设置日期/时间轴上的比例
- TensorFlow 实战 MINST
- 原生android 全面屏,谷歌全面屏手机曝光!谷歌pixel2,安卓8.0+骁龙836!
- win7电脑浏览器证书过期的解决方法
- 定积分算法java_变步长梯形积分算法求解函数定积分
- 五分钟带你了解前端开发,以及前端开发的发展机会
- np.argmin和argmax
- 编译安装Nginx以及配置运行Drupal 8,实现上传进度功能
- 360有支持linux系统的吗,观点|360 安全卫士 for Linux 使用结果
- Vibe算法简介、优缺点、代码
- Idea新建项目和快捷键
- 数学符号名称,解释,定义加举例
- AWS的十条军规: 过去十年的经验总结
- android 4k手机屏幕分辨率,安卓手机都4K屏了 真的有必要?
- Android应用开发接入讯飞语音合成
- 人在世、多交人,为人处事要留神
- 【程序哥】分析 网易一元夺宝是否有作弊空间,真像媒体所说的吗?
- halcon变量,图像与C++的一些转换(未完待续)
热门文章
- Android的HashMap方法,Android中实现HashMap排序的方法
- error lnk2001: mysql_使用mysql时的链接错误 | 学步园
- 免费制作微信小程序开发关于旅游_教大家怎么一步步免费自己做微信小程序
- wsl2启动桌面_WSL2使用xrdp实现图形桌面
- 多元线性回归(java实现)
- Remixer-谷歌的UI参数动态修改框架
- LiveLayout
- thread类 java_java入门避坑必读,通过Thread类创建java多线程
- ansys里面自带chemkin_ANSYS CHEMKINPRO复杂化学反应快速仿真
- c语言程序基本设计,C语言程序的设计基本6.ppt