我用MC9S08DZ32的SPI与其它处理器通信,MC9S08DZ32工作在SLAVE模式,具体代码如下:<br />void SPI_Slave_mode_init(void){<br />/* SPIC1:SPIE=1,SPE=1,SPTIE=0,MSTR=0,CPOL=1,CPHA=1,SSOE=0,LSBFE=0 /<br /> SPIC1 = 0xC4; <br />/* SPIC2: MODFEN=0,BIDIROE=0,SPISWAI=0,SPC0=0 */<br /> SPIC2 = 0x00; <br />/* SPIBR: SPPR2=0,SPPR1=0,SPPR0=0,SPR2=1,SPR1=0,SPR0=1 */<br /> //SPIBR = 0x04; //band rate is 125kbps,when bus rate is 4MHz<br /> SPID = 0x55;//想在MISO端输出的数据.<br />}<br />unsigned char high;<br />void main(void) {<br /> MCU_init();<br /> SPI_Slave_mode_init();<br /> EnableInterrupts; /* enable interrupts */<br /> high = 0;<br /> while(1){ <br /> __RESET_WATCHDOG(); /* feeds the dog */<br /> delay();<br /> }<br />}<br />interrupt 15 void VSPI_isr(void)<br />{<br /> unsigned char temp;<br /> <br /> temp = SPIS_SPRF; /* Read the SPI Status Register and, */<br /> high = SPID; <br /> __RESET_WATCHDOG(); /* feeds the dog */<br />}<br />这个程序接收数据是没问题的,能正确接收数据;<br />现在的问题是,我想在接收数据的同时,在MISO端上输出数据,比如我初始化中的0X55,在用BDM调试时,MISO端能正常输出;但是一旦让程序在目标板上跑起来,MISO端就只输出0X00.搞了两天了,没弄明白是为什么,高手给指点下,谢谢了. |