8694|2

367

帖子

0

TA的资源

裸片初长成(高级)

楼主
 

调试通过的AVR mega16 SPI双机通讯例子 (为新手设计,简单易懂) [复制链接]

本程序实现的功能:主机发送1~255,丛机接收并在LED上显示出来。 连接方式: 两个mega16最小系统板 PB4到PB7全部对连。 本程序在本站的最小系统板上测试通过,我向你担保本程序的正确性。 主机程序: CODE: //ICC-AVR application builder : 2007-7-18 13:01:11 // Target : M16 // Crystal: 7.3728Mhz // 作者:古欣 // AVR与虚拟仪器 http://www.avrvi.com // 功能:SPI主机模式,循环发送从1~255 #include <iom16v.h> #include <macros.h> void port_init(void) { PORTA = 0x00; DDRA = 0x00; PORTB = 0x00; DDRB = 0x00; PORTC = 0x00; //m103 output only DDRC = 0x00; PORTD = 0x00; DDRD = 0x00; } //SPI initialize // clock rate: 57599hz void spi_init(void) { PORTB |= (1<<PB4) | (1<<PB5) | (1<<PB6) | (1<<PB7); DDRB |= (1<<DDB5) | (1<<DDB7) | (1<<DDB4); //Set MOSI, SCK AND SS as outputs SPCR = 0x73; //setup SPI SPSR = 0x00; //setup SPI } //call this routine to initialize all peripherals void init_devices(void) { //stop errant interrupts until set up CLI(); //disable all interrupts port_init(); spi_init(); MCUCR = 0x00; GICR = 0x00; TIMSK = 0x00; //timer interrupt sources SEI(); //re-enable interrupts //all peripherals are now initialized } void SPI_MasterTransmit(char cData) { PORTB &=~ (1<<PB4); //强制接收方进入从模式 SPCR |= (1<<MSTR); // MSTR有时会被清零,这里强制进入主机模式 /* 启动数据传输 */ SPDR = cData; /* 等待传输结束 */ while(!(SPSR & (1<<SPIF))) ; PORTB |= (1<<PB4); } void Delay(void) //延时,没有详细计算 { unsigned int i,j; for(i=1000;i>0;i--) { for(j=200;j>0;j--) ; } } void main(void) { unsigned char i=0; init_devices(); while(1) { for(i=255;i>0;i--) { SPI_MasterTransmit(i); Delay(); } } }

最新回复

这什么内容啊,全都是乱码,看不懂  详情 回复 发表于 2014-8-22 16:49
点赞 关注
 

回复
举报

161

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
 
 
 

回复

29

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
这什么内容啊,全都是乱码,看不懂
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
【有奖直播】2025是德科技数字月-数字新品来助阵
直播时间:3月19日(周三)14:00
直播奖励:小米口红充电宝、倍思充电线、是德科技十周年鼠标垫

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表