看完《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”不明白是什么意思?



创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(2)
Mickey
Mickey
这个ld3320芯片手册中的问题,应该问ld3320芯片公司的技术人员。问题中提到的MP3等硬件已经超出我们的技术支持范畴,我们无法回答。
sinlxl
sinlxl
作者
dfrobot怎么没有人员回答啊。
- 没有更多了 -