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语言程序相关推荐
- io口输入输出实验程序c语言,【51单片机】普通I/O口模拟SPI口C语言程序
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 89C51系列单片机都不带SPI口,所在在这种情况下,我们可以模拟SPI口来现实我们要的功能,程序如下: //---------------------- ...
- 51单片机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口来现实我们要的功能,程序如下: //---------------------- ...
- 51单片机扩展io口C语言编写,51单片机扩展IO口后扩展口的地址如何确定
1. 然后它说8255的A口.B口.C口.控制寄存器的地址分别为7FFCH.7FFDH.7FFEH.7FFFH.这个是怎么算出来的? 高八位7F是因为p2.7为0是选通8255的cs片选端,第八位是F ...
- 51单片机8255扩展c语言,51单片机8255A扩展IO口
<51单片机8255A扩展IO口>由会员分享,可在线阅读,更多相关<51单片机8255A扩展IO口(23页珍藏版)>请在人人文库网上搜索. 1.一个芯片可扩展多个并行I/O口 ...
- 51单片机8255扩展c语言,参阅:基于51单片机的实时时钟的设计与开发8255扩展io口1V0.1...
<基于51单片机的实时时钟的设计与开发(8255扩展io口) (1).doc>由会员分享,可免费在线阅读全文,更多与<基于51单片机的实时时钟的设计与开发(8255扩展io口) (1 ...
- 51单片机(STC89C52RC) IO扩展实验
最近碰到了需要扩展IO口的情况了,正在想办法从lcd1602身上挤出几个IO口,另一种可行的方法是添加专用IC,google之发现可以有更好的方法,网上流传经典IO接按键法,可以用5个IO口实现5X5 ...
最新文章
- 影响堪比登月!谷歌等设计DL新方式让神经网络无限深无限窄
- java变量不声明可以直接使用吗_我们可以在不使用Java进行初始化的情况下声明最终变量吗?...
- 网站logo放在服务器,自己建网站如何设计网站LOGO
- Java – JDK 8的远景
- 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁
- python的继承与多态
- 面试题40. 最小的k个数
- excel宏编程 c语言,宏(巨集)
- 2008年9月23号,星期二,晴。博观而约取,厚积而薄发。(苏轼)
- 网络攻击与防范图谱——By科来
- BZOJ1202 [HNOI2005]狡猾的商人(洛谷P2294)
- 2022-7 刷题记录
- 文秘与计算机的知识,18文秘02李荧 随着现代科学技术的发展,计算机已经
- 快速去除照片的背景颜色和修改照片的背景颜色
- 一扩四(​FE8.1)USB转接和一扩七(FE2.1)USB原理图和PCB分享
- 解决windows xp 局域网共享
- 电脑报,百度网盘全新版本体验,风格大变样
- 点关于直线的距离、垂足、对称点公式
- 受限玻尔兹曼机和深度置信网络
- c语言中的正切函数怎么用,C语言中正切的相关函数总结
热门文章
- 新华社专题报道|陕建集团:打造「建筑行业」数字化转型标杆
- NLP算法工程师对NLP的一些看法
- 在IT行业对专业知识的掌握能力
- WaitForSingleObject 和 EnterCriticalSection 效率比较
- MFC对话框程序中添加工具栏及工具栏上的Button响应UPDATE_COMMAND_UI消息
- 前端必须掌握的经典布局:“双飞翼布局”
- android ringtonemanager raw,ringtone播放自定义的声音
- php GD库文字居中,PHP GD ttftext居中对齐
- lua软件测试自动化,一种基于Lua脚本的嵌入式软件自动化测试系统及方法专利_专利查询 - 天眼查...
- 汇总下最近没时间更新的机器学习,五一后更起来