STC单片机的SPI从机通讯问题

来源:百度知道 编辑:UC知道 时间:2024/06/17 04:04:19
利用STC12C5404单片机做从机通讯,单主单从,忽略CS,利用查询方式,数据有时会错位,利用中断方式,接收几乎都是错误的。中断方式子程序如下
(SPCTL=0xc4)

void SPI_Receive_char (void) interrupt 5 using 1
{
unsigned char SPI_temp;
P2_2=1;
SPI_temp=SPDAT;
SPI_code[count]=SPI_temp;
SPSTAT=0xc0;
count++;
if(count==6)
{
count=0;
//串口发送标志打开
}
}

利用中断接收,输出数据几乎都是错误的。请高手指点啊。。。

那有这么简单!!
想不想实现这样通信协议?

输入输出一体化模块:
板子上的硬件资源有52单片机一个,8*8led点阵屏16个,4位一体数码管8个(32个显示位位),led灯16个,4*4矩阵键盘,74ls154,74ls373,分立与门,或门等等。
主程序负责所有器件驱动以及和外界数据交换。模块上有键按下后通知主机读取键值
和外界通信有4种通信协议可选,1_Wire,I2C, UART, SPI。 每种协议都支持总线上挂接256个模块。
1_Wire 总线模式时所有模块可以挂接在单线上 。(每秒传输27531字节)
I2C 模式时所有模块可以和标准的I2C器件挂接在一起 。(每秒传输38782字节)
UART 模式时所有模块还可以直接被PC机控制 。。(每秒传输37062字节)
SPI 模式时所有模块可以和标准的SPI器件挂接在一起。。(每秒传输38782字节)

你给的信息太少了,判断不出来。
你可以先判断一下错误在什么地方,用一下Debug,再进入这个中断,就设置一个断点,看看程序走到什么地方去了。

我估计你中断以后,又马上进入中断了,导致数据不正确。