📄 protodma.lst
字号:
C51 COMPILER V7.01 PROTODMA 09/27/2003 23:46:49 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE PROTODMA
OBJECT MODULE PLACED IN protodma.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE protodma.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1
2
3
4
5
6
7
8
9 #include <stdio.h>
10 #include <string.h>
11
12 #include "mainloop.h"
13 #include "Epphal.h"
14 #include "usb100.h"
15
16 extern CONTROL_XFER ControlData;
17 extern IO_REQUEST idata ioRequest;
18 extern EPPFLAGS bEPPflags;
19 extern BOOL bNoRAM;
20
21 extern void single_transmit(unsigned char * buf, unsigned char len);
22 extern void stall_ep0(void);
23
24 void get_firmware_version()
25 {
26 1 unsigned char i;
27 1
28 1 i = 0x30; // firmware version number
29 1 single_transmit((unsigned char *)&i, 1);
30 1
31 1 }
32
33 void get_buffer_size()
34 {
35 1 unsigned char i[4];
36 1
37 1 if(bNoRAM == TRUE) {
38 2 i[0] = EP2_PACKET_SIZE;
39 2 i[1] = 0;
40 2 i[2] = 0;
41 2 i[3] = 0;
42 2 } else {
43 2 i[0] = 0;
44 2 i[1] = 1;
45 2 i[2] = 0;
46 2 i[3] = 0;
47 2 }
48 1 single_transmit(i, 4);
49 1
50 1 }
51
52 void setup_dma_request()
53 {
54 1 memcpy((unsigned char *)&ioRequest + ControlData.DeviceRequest.wValue,
55 1 ControlData.dataBuffer,
C51 COMPILER V7.01 PROTODMA 09/27/2003 23:46:49 PAGE 2
56 1 ControlData.DeviceRequest.wLength);
57 1
58 1 ioRequest.uSize = SWAP(ioRequest.uSize);
59 1 ioRequest.uAddressL = SWAP(ioRequest.uAddressL);
60 1
61 1 if(ioRequest.uSize > DMA_BUFFER_SIZE) { // Unaccepted request
62 2 stall_ep0();
63 2 }
64 1 else if(bNoRAM == TRUE && ioRequest.uSize > EP2_PACKET_SIZE) {
65 2 stall_ep0();
66 2 }
67 1 else {
68 2 if(bEPPflags.bits.dma_state == DMA_IDLE) {
69 3 DISABLE;
70 3 bEPPflags.bits.setup_dma ++;
71 3 ENABLE;
72 3 }
73 2 else {
74 3 DISABLE;
75 3 bEPPflags.bits.dma_state = DMA_PENDING;
76 3 ENABLE;
77 3 }
78 2
79 2 } // else if accepted request
80 1 }
81
82 void read_write_register(void)
83 {
84 1 unsigned char i;
85 1
86 1 if(ControlData.DeviceRequest.bmRequestType & (unsigned char)USB_ENDPOINT_DIRECTION_MASK) {
87 2
88 2 if(bEPPflags.bits.verbose)
89 2 printf("Read Registers: Offset = 0x%x, Length = 0x%x, Index = 0x%x.\n",
90 2 ControlData.DeviceRequest.wValue,
91 2 ControlData.DeviceRequest.wLength,
92 2 ControlData.DeviceRequest.wIndex);
93 2
94 2 if(ControlData.DeviceRequest.wIndex == GET_FIRMWARE_VERSION &&
95 2 ControlData.DeviceRequest.wValue == 0 &&
96 2 ControlData.DeviceRequest.wLength == 1)
97 2 get_firmware_version();
98 2 else
99 2 if(ControlData.DeviceRequest.wIndex == GET_BUFFER_SIZE &&
100 2 ControlData.DeviceRequest.wValue == 0 &&
101 2 ControlData.DeviceRequest.wLength == 4)
102 2 get_buffer_size();
103 2 else
104 2 stall_ep0();
105 2
106 2 } // if read register
107 1 else{
108 2 if(bEPPflags.bits.verbose) {
109 3
110 3 //printf("Write Registers: Offset = 0x%x, Length = 0x%x, Index = 0x%x.\n",
111 3 // ControlData.DeviceRequest.wValue,
112 3 // ControlData.DeviceRequest.wLength,
113 3 // ControlData.DeviceRequest.wIndex);
114 3
115 3 //printf("Data: ");
116 3 for(i = 0; i < ControlData.DeviceRequest.wLength; i ++)
117 3 printf("0x%bx, ", *((ControlData.dataBuffer)+i));
C51 COMPILER V7.01 PROTODMA 09/27/2003 23:46:49 PAGE 3
118 3 printf("\n");
119 3 }
120 2
121 2 if(ControlData.DeviceRequest.wIndex == SETUP_DMA_REQUEST &&
122 2 ControlData.DeviceRequest.wValue == 0 &&
123 2 ControlData.DeviceRequest.wLength == 6)
124 2 setup_dma_request();
125 2 //stall_ep0();
126 2 else
127 2 stall_ep0();
128 2 } // if write register
129 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 371 ----
CONSTANT SIZE = 71 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 6
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -