阅读:1337回复:8
D12入门的问题 会者不难 谢谢!
我使用的是周立功D12.
C51 如何向 PC 发送数据呢? 谁给个例子给我呢?或者说说发送过程. 我改动了周立功控制信号灯例子里面的mainloop.c, 我调用了 D12_WriteEndpoint(3, 4, GenEpBuf); //往端点1写数据 可以成功写入,但是PC端没有看到数据啊. PC端绝对没有问题的.单片机这方面我就不熟了. 谢谢! |
|
|
沙发#
发布于:2003-07-03 16:26
你需要修改d12test工程里的InterruptIn()函数,对收到的数据进行处理。
|
|
|
板凳#
发布于:2003-07-03 16:32
xjLegend:
不对啊.如果我不改动C51原来的程序, D12test这边我可以读到数据的啊. 我是要改动C51这边的程序不知道怎么改.让C51给PC发数据. 因为C51例子里只有接收PC的数据. 就是 \"周立功USB51S程序\"如何改动的问题. 不知道是不是我没有说清楚. 不过谢谢你的回答,你懂怎么改吗?我可以把程序发上去. |
|
|
地板#
发布于:2003-07-03 16:41
原来的固件程序在端点3只向上传输一个字节(信号灯的编码值).
如果这个值你改了,那么PC高层也要相应的修改(分析收到的值). |
|
|
地下室#
发布于:2003-07-03 16:55
xjLegend:
我不大明白.可以具体说说吗? 原来的程序是这样: void check_key_LED(void) { static unsigned char c, last_key = 0xf; c = MCU_SWM0 & MCU_SWM1; c &= 0x0f; if (c != last_key) { D12_WriteEndpoint(3, 1, &c);//按键状态改变,发送信息给主机 } last_key = c; if(bEPPflags.bits.ep1_rxdone) { DISABLE;//接收到主机发来的LED控制信息 bEPPflags.bits.ep1_rxdone = 0; ENABLE; MCU_LED0 = !(GenEpBuf[3] & 0x1);//控制LED状态 MCU_LED1 = !(GenEpBuf[3] & 0x2); } } 我要怎么改才能让C51发送一个数据让PC收到呢? |
|
|
5楼#
发布于:2003-07-03 16:58
或者可能不在这里修改.
我真的不懂在哪里修改可以让c51发送数据给pc, 不是就调用D12_WriteEndpoint就可以吗? 非常感谢你的热心帮助. |
|
|
6楼#
发布于:2003-07-03 17:04
xjLegend: 前半段程序是判断按键状态改变与否,若改变则发送编码值,PC端在InterruptIn()线程中处理; 后半段则是接收PC端发来的按钮改变编码值,具体值可查看PC程序中的相应按钮响应函数。 你可在主程序的任意地方调用D12_WriteEndpoint(3,...) 发送数据,相应的PC端线程中也要判断处理收到的数据. |
|
|
7楼#
发布于:2003-07-03 17:10
那个程序我是看懂了.
我大概明白你的意思了,发送数据没收到估计就是InterruptIn()没有修改. 我看到了: //端点1输出中断操作 void ep1_txdone(void) { D12_ReadLastTransactionStatus(3);//复位中断寄存器 //可添加用户代码(进行检测端点号3IN令牌的操作) } 可是怎么改呢?无从下手啊. |
|
|
8楼#
发布于:2003-07-04 10:01
好了.
给分. |
|
|