AVR复习笔记--AVR单片机SPI多机通讯【包括数据回传与接收】【0926】
2009-09-26 16:53
232 查看
AVR复习笔记—SPI多机通信
最近决定复习下AVR单片机,其实也是为了借此复习下几种简单的通信协议,包括串口,SPI,I2C等。
本来以为一两个晚上就能搞定的事儿,没想到竟耗费了一周晚上空余的时间。
当然主要是这次的要求要提高点,实现SPI的多机通信,
不但要发数据还要回传数据。
实际中还是遇到了比我想象中要大的多的困难。
即使是现在的实现方式也不是很理想。
下面是spi部分的代码,由于spi接收发送用的同一终端,感觉使用起来形式不怎么样,还是采用了轮询标志位的方式
Code
#include "basic.h"
#include "usart.h"
#include "spi.h"
int main( void )
{
usart_init(9600);
spi_init(0);
char tmp=0;
DDRB&=~((1<<4));
PORTB|=((1<<4));
while(1)
{
if(PINB_PINB4==0) //检测当前总线是否被占用
{
tmp=spi_trans('1');
usart_send(tmp);
}
}
return 0;
}
最近决定复习下AVR单片机,其实也是为了借此复习下几种简单的通信协议,包括串口,SPI,I2C等。
本来以为一两个晚上就能搞定的事儿,没想到竟耗费了一周晚上空余的时间。
当然主要是这次的要求要提高点,实现SPI的多机通信,
不但要发数据还要回传数据。
实际中还是遇到了比我想象中要大的多的困难。
即使是现在的实现方式也不是很理想。
下面是spi部分的代码,由于spi接收发送用的同一终端,感觉使用起来形式不怎么样,还是采用了轮询标志位的方式
Code
#include "basic.h"
#include "usart.h"
#include "spi.h"
int main( void )
{
usart_init(9600);
spi_init(0);
char tmp=0;
DDRB&=~((1<<4));
PORTB|=((1<<4));
while(1)
{
if(PINB_PINB4==0) //检测当前总线是否被占用
{
tmp=spi_trans('1');
usart_send(tmp);
}
}
return 0;
}
下面为proteus下的截图
相关文章推荐
- mysql复习笔记gprs接收数据存储表
- 系统分析员考试复习笔记-4:第四章 数据通讯与计算机网络
- AVR单片机SPI多机通讯 成本比51高但是 强
- php学习笔记(三十)ajax请求和接收参数的实现方式(包括json数据格式的简单处理)
- 18考研-数据结构复习笔记-栈,队列,数组
- 【数据结构】复习笔记
- 数据结构与算法复习笔记
- 数据结构复习笔记(4)
- 数据结构复习笔记(数据类型及单链表实现)
- 复习笔记-数据类型2
- [Nodejs]初探nodejs学习笔记- 如何使用nodejs接收get/post 数据(参数)
- JAVA复习笔记--第一章:第二节:数据类型
- Stm32作为主设备使用DMA接收SPI数据
- 【算法学习笔记】10.数据结构基础 二叉树初步练习3(遍历与递归复习)
- [Win32] Windows Sockets 2笔记(3)TCP Server端的实现(长数据接收+超时机制)
- JAVA高级视频_IO输入与输出 Java程序与其他进程的数据通讯 学习笔记
- Socket网络编程学习笔记(5):发送和接收实体类数据
- 数据结构与算法复习笔记
- Ajax处理接收到的xml数据【学习笔记】