刚学usb方面的东西,得到一个C51的SL811HS的读写U盘的程序,现有些疑问,希望高手能给些解答,不甚感激:
先是一些一些宏:
#define SL811_ADDR ((unsigned char *) 0x024000)
#define SL811_COMM ((unsigned char *) 0x024001)
#define SL811_USBA_Control 0x00
然后
SL811_ADDR[0] = SL811_Control;
SL811_COMM[0] = 0x08;
我看注解的意思好像就是往0x00地址写入0x08,但从程序本身来看应该是0x24000地址写入0x00,0x024001地址写入0x08,这根本和注释不是一回事啊,况且51的寻址空间只有0000-FFFF,所以我觉得这个程序本身就有错误,我又回头去看SL811手册读写寄存器的操作,当A0为低时写入地址,A0=1时再写入数据,我的理解应该是这样就可以的:
#define SL811_USBA_Control 0x00
int *p=SL811_USBA_Control ;
*p=0x08;
本人菜鸟,希望希望高手能指点一二!
|