- #include "ai8h.h"#include "intrins.h"sbit SS = P1^0;sbit LED = P1^1;sbit KEY = P0^0;void SPI_Isr() interrupt 9{SPSTAT = 0xc0; //清中断标志if (SPCTL & 0x10){ //主机模式SS = 1; //拉高从机的 SS 管脚SPCTL = 0x40; //重新设置为从机待机}else{ //从机模式SPDAT = SPDAT; //将接收到的数据回传给主机}LED = !LED; //测试端口}void main(){P_SW2 |= 0x80; //使能访问 XFR,没有冲突不用关闭P0M0 = 0x00;P0M1 = 0x00;P1M0 = 0x00;P1M1 = 0x00;P2M0 = 0x00;P2M1 = 0x00;P3M0 = 0x00;P3M1 = 0x00;P4M0 = 0x00;P4M1 = 0x00;P5M0 = 0x00;P5M1 = 0x00;LED = 1;KEY = 1;SS = 1;SPCTL = 0x40; //使能 SPI 从机模式进行待机SPSTAT = 0xc0; //清中断标志IE2 = ESPI; //使能 SPI 中断EA = 1;while (1){if (!KEY) //等待按键触发{SPCTL = 0x50; //使能 SPI 主机模式SS = 0; //拉低从机 SS 管脚SPDAT = 0x5a; //发送测试数据while (!KEY); //等待按键释放}}}
复制代码
|