各位大虾,STC12c单片机根据资料可以实现SPI硬件发送和接收,但只有一次就不工作了。而且每次都要复位。

[复制链接]
查看11 | 回复3 | 2011-7-25 23:25:36 | 显示全部楼层 |阅读模式
用的是中断方式,单主单从的模式。通过串口和示波器调试的
主程序:
void main()
{
UART_init();

Init_SPI();

IE2 |=ESPI;

EA =1        ;
send_one_char(0x35);
while(1)
{
//        send_one_char(get_one_char());
        SPISS=0;
        send_one_char(0x38);
        send_one_char(0x39);       
}
中断函数:
void spi_isr() interrupt 9 using 1
{

SPSTAT = SPIF|WCOL;       

SPISS=1;

send_one_char(0x55);

send_one_char(0x38);
send_one_char(SPDAT);
send_one_char(0x36);
}
void Init_SPI(void)
{

SPDAT=0;       
//初始化SPI数据

SPSTAT =SPIF |WCOL;
//清SPI状态 相或

SPCTL=SSIG |SPEN |MSTR;       
//主机模式
}
想了就是没想出为什么。还请各位大虾多多指教,小女子感激不尽!!

回复

使用道具 举报

千问 | 2011-7-25 23:25:36 | 显示全部楼层
对单片机不是很了解。但是基于电脑和自控的知识,中断后是不是还要给一个继续的指令?类似于continue()什么的。...
回复

使用道具 举报

千问 | 2011-7-25 23:25:36 | 显示全部楼层
SPISS=1; 你在中断里面关了片选了...
回复

使用道具 举报

千问 | 2011-7-25 23:25:36 | 显示全部楼层
send_one_char冲突了...
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行