看完《ld3320开发手册》后的疑问之一
2013-01-121.7万
AI 快速预览详细
本文主要讨论了STC单片机的SPI接口和寄存器配置相关问题。首先介绍了SPI_TR函数的实现方式,然后详细解释了SPDAT寄存器地址不一致的原因,并提供了具体的解决方法。接着解析了sbit定义中的0x00,0000含义以及P0M0寄存器的作用。最后,文章还涉及了语音合成文件voice.dat的使用。通过本文,读者可以更好地理解和解决STC单片机开发中的常见问题。
|
STC单片机(带SPI口的种类)兼顾读写的函数例程 unsigend char SPI_TR( unsigned char x ) { SPSTAT=0xC0; SPDAT=x; while(!(SPSTAT&0x80)); return SPDAT; } 17.2.2 SPI状态寄存器SPSTAT 17.2.3 SPI数据寄存器SPDAT 在STC10F08XE.H中 sfr SPDAT = 0xCF; //SPI Data Register 0000,0000 (下面的8个零什么意思) 可是在STC官网中却成了: sfr SPDAT =Ox86 ;//SPI Data Register sfr SPDAT = 0xCF 表示SPDAT的地址是0XCF,但是为什么前后不一样啊 ET0 EX0 0x00,0000 sbit EX0 = IE^0; 上面的语句是从头文件中取得的,如果是汇编语音,问什么,好几个语句后面都在下面写0x00,0000 上面的“0x00,0000”不知道是什么意思? 这些声音是事先在PC机上录制好的MP3文件,在PC机上合成到一个文件 voice.dat中 #ifdef HARD_PARA_PORT #define LD_INDEX_PORT (*((volatile unsigned char xdata*)(0x8100))) #define LD_DATA_PORT (*((volatile unsigned char xdata*)(0x8000))) “(*((volatile unsigned char xdata*)(0x8000))) ”是什么意思? define的语法我知道,不知道的是后面定义的是什么,“0x8000”的什么意识,为什么要这样写 sfr P0M0 = 0x94; // 0000,0000 sfr P0M1 = 0x93; // 0000,0000 “POM0为P0模式配置寄存器0”不明白是什么意思? |



