欢迎来到天天文库
浏览记录
ID:46329416
大小:301.31 KB
页数:11页
时间:2019-11-22
《实验十一单片机之间SPI总线通信实验》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验十SPI同步串口单片机之间SPI总线通信实验实验目的掌握SPI转换模块的内部结构和工作过程,每一位相关设置项的功能含义。看懂电路原理图,掌握控制线的连接方法;进一步操作按键和显示的功能;练习先编写流程图,再编写程序代码的能力,练习程序代码片段的功能测试;进一步熟练掌握集成开发环境的使用方法;功能要求参看教材硬件连接:参看教材《单片机之间SPI总线通信实验》主机流程图软件设计将特殊功能寄存器定义文件包含进来定义片选控制引脚为PORTC,6=符号CS_MCU;#defineCS_MCUPORTC,6定义发
2、送数据寄存器KEY_VALUE,接收数据寄存器KEY_VALUE_C,定义软件延时外部循环变量COUNT1、COUNT2、COUNT3、COUNT4定义程序存放区域的起始地址为复位地址空指令转到主程序伪指令定义复位引导主机主程序MAIN初始化各引脚和SPI模块转到体1开启B口内部弱上拉,控制按键初始化SSPSTAT,CKE=0,SMP=O将PORTD设置为输出端口,控制LED显示将RB0-RB5设置为输入端口,控制按键初始化SPI模块通信线方向TRISC为B'10010111'SCK输出,SDO输出,SD
3、I输入,CS_MCU输出(查看附录引脚位置)禁止SSP中断;禁止所有中断转到体0SSPIF=0将LED显示清零从机SS禁止;BSFCS_MCU初始化SSPCON;CKP=0,SSPEN=1,SPI主模式Fosc/16主机主程序MAIN获取按键值,并发送给从机调用获取按键值CHECK子程序从机SS使能,设CS_MCU为低电平向从机发送数据:将KEY_VALUE写入SSPBUF后,开始启动发送和接收过程检测发送是否完毕;SSPIF=1否,继续检测GOTO$-1是,从机SS禁止,设CS_MCU为高电平清除SSP
4、IF标志位YN主机主程序MAIN从从机获取返回值,点亮对应的LED。延时1ms,等待发送完毕从机SS使能写入一个无效数据,意在接收从机回送的键盘值,写入SSPBUF后,启动发送和接收过程检测发送是否完毕否,继续检测等待GOTO$-1是,从机SS禁止清除SSPIF标志位将接收到的数据存到KEY_VALUE_C点亮按键对应的LED子程序返回YN将特殊功能寄存器定义文件包含进来定义W保护寄存器SAVEW;STATUS保护寄存器SAVES;中断计数器COUNT定义接收和发送数据寄存器KEY_VALUE定义程序存放
5、区域的起始地址为复位地址空指令转到主程序伪指令定义复位引导从机流程图获取主机发送值点亮对应的LED,并将数据发送给主机。中断程序引导定义程序存放区域的起始地址为中断入口地址中断现场保护转到中断服务程序从机主程序MAIN初始化各引脚和SPI模块转到体1初始化SSPSTAT,清除SMP,CKE位将PORTD设置为输出端口,控制LED初始化SS为输入初始化SCK输出,SDO输出,SDI输入允许SSP中断转到体0清除SPI模块标志位SSPIF=0将PORTD清零,清除显示清零中断计数器COUNT初始化SSPCON
6、;CKP=0,SSPEN=1,SPI从模式带SS控制外围功能模块中断允许开启全局中断原地等待中断到来,GOTO$从机中断服务程序SSPINT接收数据,回传数据,点亮按键有变化的LED检测是否是SSP中断不是,跳出中断,转到恢复现场是,清除标志SSPIF=0读取收到的数据存到KEY_VALUE判断中断次数,COUNT的第0位=0?不是,跳到第二次中断处理程序是,跳到第一次中断处理程序Y将收到的数据存到W;点亮按键有变化的LED回传数据,将收到的按键值放入SSPBUF,等待循环链的启动COUNT=1恢复现场调
7、整1,2次的标志,COUNT=0中断返回思考:从机初始化主程序要求为什么从机的收发数据要采用中断方式:从机的收和发送都没有启动权,要是采用查询收发完毕方式会占用CPU太多时间。中断的引发在什么时刻?从机模式怎样设置?从机采用SS控制怎样设置?怎样设置对外信号引脚的方向?怎样设置中断方式?SSPCON的收发格式是否要和主机保持一致?掌握每一条指令的功能含义。
此文档下载收益归作者所有