- //**********************mcu端口初始化子程序*************************************
- //**********************mcu端口初始化子程序*************************************
- void Port_Init(void)
- {
- PORTA = 0xFF;
- DDRA = 0xFD; // display data
- PORTB = 0xFF; //PB7->SCK,PB5->SI.PB4->CS拉高 , PB6->SO拉高
- DDRB = 0xB3; // PB7->SCK,PB5->SI.PB4->CS输出, PB6->SO输入
- PORTC = 0xC3; //m103 output only
- DDRC = 0xC2; // PC0->key1 PC1->LED PC7..6->dispaly h&l
- PORTD = 0x78;
- DDRD = 0x00; //
- }
- //***************************SPI初始化子程序************************************
- void Spi_Init(void)
- {
- uchar temp;
- SPCR |= 0x73;//0x51; //不使用SPI中断,其它同上 1/4晶振速率
- SPSR = 0x00; //setup SPI 0x01双倍速率
- temp = SPSR; //!!!
- temp = SPDR; //清空SPI,和中断标志,使SPI空闲
- }
- //************************************SPI写子程序*******************************
- unsigned char SPISendByte(unsigned char cData)
- {
- SPDR = cData;
- while(!(SPSR & (1<<SPIF)));
- return SPDR;
- }
- //************************************SPI读程序*********************************
- unsigned char SPIRecvByte(void)
- {
- return SPISendByte(0x00); // 产生SCK时钟,读操作
- }
我是使用的mega16硬件SPI,作为主机。。我SPI初始化和配置都写好了。。也检查了很多遍。。我测试SPI写一字节数据到SPDR数据寄存器中,但是写入以后,SPDR寄存器还是0xFF..不知道大家遇到这问题没有?。。有没有解决的办法?谢谢。。下面我把SPI的源代码贴出来。。大家看看:
|