理论教育 PIC单片机:主控接收模式的程序设计实例

PIC单片机:主控接收模式的程序设计实例

时间:2023-10-19 理论教育 版权反馈
【摘要】:本节通过一个双机通信的例子来介绍主控方接收、从动方发送的编程方法。图10-7 SPI模块双机通信实验主控方接收调试电路图题意分析●按钮S1的状态可以通过读取RC0得知。想从U2接收数据,由图10-7连接方法可知只能使用SPI主控接收模式。程序运行效果是初始状态X2显示3,X1不显示。启动VSM后,双击U2单片机修改其Program File属性,指定为第6步获得的S102SSend.cof,然后运行程序。

PIC单片机:主控接收模式的程序设计实例

本节通过一个双机通信的例子来介绍主控方接收、从动方发送的编程方法。

【例10-2】电路如图10-7所示。编程实现每按一次按钮S1U1就从U2接收一个字节并在数码管X1上显示出来。U2发送的初值是3,发送前把要发送内容显示在X2上,每发送一次后初值自增1。

主控方接收调试使用的电路图在光盘位置:“\Example\Chapter10\S102\MstrRcv.DSN”。从动方发送调试使用的电路图在光盘位置:“\Example\Chapter10\S102\SlaveSend.DSN”。之所以用两张图是因为当同一电路图中有多个单片机时,MPLAB中的Proteus VSM只会仿真编号较小的那个单片机。例如,有U1,U2两个单片机,Proteus VSM只会把MPLAB中生成的目标文件自动加载到U1中,而不会自动加载到U2中,这样当需要仿真时,必须另外指定U2的Program File属性。

978-7-111-33274-9-Chapter10-30.jpg

图10-7 SPI模块双机通信实验主控方接收调试电路图

题意分析

●按钮S1的状态可以通过读取RC0得知。想从U2接收数据,由图10-7连接方法可知只能使用SPI主控接收模式。

●U1是主控接收方,所以U1应该提供时钟,即RC3/SCK为输出状态,RC4/SDI为输入状态。

●U2是从动发送方,所以U2的RC3/SCK应为输入状态,U2的RC5/SDO为输出状态。

●为了确定何时接收数据,图10-7中加入了CS1信号,一端连接在主控方U1的RC1上,另一端连接在从动方U2的RA5/978-7-111-33274-9-Chapter10-31.jpg信号上。所以U1的RC1应为输出状态,当需要接收数据时RC1输出0,否则输出1;U2的RA5/978-7-111-33274-9-Chapter10-32.jpg信号应为输入状态,用来获得U1的芯片选择信号CS1。

●要使数码管显示数字字形,通过一个字形数组即可实现。

●本程序需要双机通信:主控方接收和从动方发送,所以需要两个单片机程序,故需要建立两个项目来分别完成主控发送程序和从动接收程序。

设计过程(www.daowen.com)

1)用MPLAB新建项目S102MRcv,语言工具选择为“HI-TECH Universal Toolsuite”,保存在“C:\S102”文件夹下。

2)新建MRcvMain.C文件并加入项目中,其内容如下所示(本项目所有源码内容参考光盘“\Example\Chapter10\S102\”文件夹内容)。

978-7-111-33274-9-Chapter10-33.jpg

978-7-111-33274-9-Chapter10-34.jpg

3)把项目保存后成功编译出目标文件S102MRcv.cof。由于此时U2需要的程序还没有编译出来,所以暂且不能调试运行程序。

4)用MPLAB新建项目S102SSend,语言工具选择为“HI-TECH Universal Toolsuite”,保存在“C:\S102”根文件夹下。

5)新建SSendMain.C文件并加入项目中,其内容如下所示(本项目所有源码内容参考光盘“\Example\Chapter15\S102\”文件夹内容)。

978-7-111-33274-9-Chapter10-35.jpg

978-7-111-33274-9-Chapter10-36.jpg

978-7-111-33274-9-Chapter10-37.jpg

6)把项目保存后成功编译出目标文件S102SSend.cof。然后用调试工具Proteus VSM加载SlaveSend.DSN。启动VSM后,双击U2单片机修改其Program File属性,指定为第3步获得的S102MRcv.cof,然后运行程序。程序运行效果是初始状态X2显示3,X1不显示。每按一次S1按钮,X1先显示X2的内容,过大约0.5s后,X2上显示的数字自加1。

7)若想调试主控发送方程序,则需要重新打开S102MRcv项目,然后用调试工具Proteus VSM加载MstrRcv.DSN。启动VSM后,双击U2单片机修改其Program File属性,指定为第6步获得的S102SSend.cof,然后运行程序。程序运行效果与第6步的效果完全相同。为了便于理解SPI的通信过程,读者可以在运行过程中打开Proteus中的虚拟示波器观察SPI的通信波形。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈