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