阅读:863回复:3
请问固件问题
我在读周立功的固件的程序,其中看到很多不明白的地方,清各位大侠赐教:
1:unsigned short D12_ReadChipID(void) { unsigned short i,j; if(bEPPflags.bits.in_isr == 0) DISABLE; outportb(D12_COMMAND, 0xFD); i=inportb(D12_DATA); j=inportb(D12_DATA); i += (j<<8); if(bEPPflags.bits.in_isr == 0) ENABLE; return i; } 这是D12ci.c中的一个函数,其中outportb(D12_COMMAND, 0xFD);中的FD是哪里来得那?我在D12的资料中还没有看到这个命令阿/ 2:还是D12ci.c中 unsigned char D12_ReadEndpointStatus(unsigned char bEndp) { unsigned char c; if(bEPPflags.bits.in_isr == 0) DISABLE; outportb(D12_COMMAND, 0x80 + bEndp);//读取端点状态 c = inportb(D12_DATA); if(bEPPflags.bits.in_isr == 0) ENABLE; return c; } 其中的outportb(D12_COMMAND, 0x80 + bEndp)0x80是不是应该是0x40?不然的话0x80 + bEndp好像还没有这个命令阿. 3:在那个MainLoop.h中 #define SWAP(x) ((((x) & 0xFF) << 8) | (((x) >> 8) & 0xFF)) 它实现的是将高8位和低8位交换,为什么要这样那? 4:d12的命令D0h可以分配地址并且使能,那为什么还要用D8h来使能端点那?为什么不在分配的时候同时使能那? 我是菜鸟,望各位大侠赐教,谢谢了! |
|
最新喜欢:![]() |
沙发#
发布于:2002-12-31 15:48
1,0fdh他们说那是得到产品ID命令(READ CHIPID),但是手册上没有,你试试看
2,80-85是读端点状态命令,后面可读出一字节数据 3,D0是使能地址,D8是使能普通/同步端点(注意控制端点不用使能) |
|
板凳#
发布于:2003-01-05 18:40
怎么这么冷清啊?我还有个问题啊
就是关于晶振的问题,如果我用的是外部的时钟来控制d12的时钟,是不是就是将d12的XTAL1脚接上控制芯片的时钟输出脚就行了?我看到手册上面是这样说得,如果是这样的话那个set_mode明亮中的关于时钟分频系数的设置是不是就没有用了啊?随便写一个数?我想应该是这样的,不知道对不对啊?清大侠确认一下,谢谢了! |
|
地板#
发布于:2003-01-05 21:06
从XTAL1输入的时钟是d12正常工作所需要的,且必须是6MHz,set_mode中的分频系数是对d12内部基准频率(48MHz)的分频,此频率在clock out上输出.
|
|
|