如题目,具体相关程序如下
void init()
{
asm("CLRWDT"); //清零看门狗
ADCON1=0X06; //通道都改为数字模式
OPTION=0x8f; //禁止端口B弱上拉,选择内部时钟源,预分频器分给看门狗
TRISC=0X00; //端口C配置为输出模式
PORTC=0x00; //初始化端口C为0x00
}
//初始化SPI端口
void spi_init()
{
SSPCON=0X31;//高电平空闲、打开串口、主控方式f/16
SMP=1;
CKE=1;//时钟下降沿发送数据
SSPIF=0; //清零spi标志位
SSPIE=0; //禁止使能spi中断允许位
}
//写一个字节
void write_word(uchar date,uchar d_c)
{
uchar date_unuse;
sce=0;
dc=d_c;
date_unuse=SSPBUF;
asm("NOP");
asm("NOP");
SSPBUF=date;
do
{
asm("CLRWDT");
}while(SSPIF==0);//等待发送完毕
SSPIF=0;
dc=1;
sce=1;
sdin=1;
}
问题是:在调用到write_word函数发送数据时,总是无法判断到SSPIF是1,也就是程序死在了那个while循环里,不是何故,请高手指教。
完整程序见附件! |