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);
}
io口输入输出实验程序c语言,【51单片机】普通I/O口模拟SPI口C语言程序相关推荐
- c51单片机的语言,51单片机,stm32,arduino都是用什么语言进行编程的?
51单片机,STM32单片机用汇编或者C语言,现在基本都用C语言编程,Arduino有自己的编程环境,用户也是用C语言编程. 51单片机的编程 51单片机进入中国比较早,在早前用汇编编程比较多,我在上 ...
- p1口输入输出实验c语言程序,51单片机P1口输入输出实验实验报告.doc
51单片机P1口输入输出实验实验报告 实验一 P1口输入输出实验一 实验目的 1 掌握P1口作为I/O口时的使用方法. 2 理解读引脚和读锁存器的区别. 实验原理 由 AT89C51 组成的单片机系统 ...
- 51单片机扩展io口实验c语言,【51单片机】普通I/O口模拟SPI口C语言程序
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 89C51系列单片机都不带SPI口,所在在这种情况下,我们可以模拟SPI口来现实我们要的功能,程序如下: //---------------------- ...
- 51单片机io位与 c语言,【51单片机】普通I/O口模拟SPI口C语言程序
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 89C51系列单片机都不带SPI口,所在在这种情况下,我们可以模拟SPI口来现实我们要的功能,程序如下: //---------------------- ...
- 汇编语言单片机c51基本i/o输入输出实验报告,实验二i-o口输入输出实验报告.doc...
实验二i-o口输入输出实验报告 单片机实验报告 2 姓名 徐伟彬 学号 1215111035 时间 地点 实验题目 I/O口输入.输出实验 一.实验目的 1. 学习I/O口的使用方法. 2. 学习延时 ...
- p1口输入 输出实验C语言,单片机P1口输入输出实验单片机P1口输入输出实验.ppt
单片机P1口输入输出实验单片机P1口输入输出实验 单片机I/O口输入输出实验 (或单片机数字量输入输出实验);单片机P1口输入输出实验 ;2.实验要求(1).2)为必做,3)为选做) 3) P1口作输 ...
- 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口来现实我们要的功能,程序如下: //---------------------- ...
最新文章
- 定期删除各子文件下数据
- ADO.NET Entity Data Model入门实例
- 【Android 应用开发】 自定义 圆形进度条 组件
- IO:select、poll、epoll
- 不用一行代码,用 API 操作数据库,你信吗
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 二十三║Vue实战:Vuex 其实很简单
- SpringMVC-DispatcherServlet配置(Spring-servlet.xml)
- 阿里云神龙团队拿下TPCx-BB排名第一的背后技术
- 【Java】模拟分组交换网络的时延、丢包
- Oracle学习笔记:oracle和serverver在过程sql中通过select对变量进行赋值的区别
- java描述线性探测_实现基于线性探测的哈希表1
- c语言程序年月日怎么编,C语言程序设计: 输入年月日 然后输出是星期几
- 2.Zabbix企业级分布式监控系统 --- Zabbix 简介
- 字道-最美中国字硬笔书法教学|培养孩子正确的执笔写字姿势有多重要?看完你就明白了!
- Winform中HelpButton的用法总结
- ElasticSearch 7.7.0 高级篇-搜索技术
- 利用python爬取实习僧网站上的数据
- C# 获取汉字的拼音首字母(转)
- 通过SendGrid进行邮件的发送【Java】
- 图片风格迁移:基于实例缓解细节丢失、人脸风格化失败问题