📄 d12ci.lst
字号:
C51 COMPILER V6.12 D12CI 12/16/2004 15:21:56 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE D12CI
OBJECT MODULE PLACED IN E:\MCU\USB_FIRM\D12CI.OBJ
COMPILER INVOKED BY: C:\COMP51\C51.EXE E:\MCU\USB_FIRM\D12CI.C DB SB OE
stmt level source
1 /**********************************************
2 USB固件编程
3
4 File Name: D12ci.C
5 Revision: 0.2(2004-05-28)
6 Author: LHP
7 Use library:
8 Note: 不带DMA控制功能
9 ***********************************************/
10
11 #include <reg51.h>
12
13 #include "D12ci.h"
14
15 #define D12_COMMAND 0xff03
16 #define D12_DATA 0xff02
17
18 sbit A0=P3^0;
19
20 void outportb(unsigned int Addr,unsigned char Data);
21 unsigned char inportb(unsigned int Addr);
22
23 extern EPPFLAGS bEPPflags;
24
25 void outportb(unsigned int Addr,unsigned char Data)
26 {
27 1 if(Addr%2==1)
28 1 A0=1;
29 1 else
30 1 A0=0;
31 1
32 1 *((unsigned char xdata*)Addr)=Data;
33 1 }
34
35 unsigned char inportb(unsigned int Addr)
36 {//从D12读取数据,addr必须是偶数,此时数据线上传输的是数据,所以直接就让A0=0
37 1 A0=0;
38 1 return *((unsigned char xdata*)Addr);
39 1 }
40
41 void D12_SetAddressEnable(unsigned char bAddress, unsigned char bEnable)
42 {
43 1 if(bEPPflags.bits.in_isr == 0)
44 1 DISABLE;
45 1
46 1 // A0=1;
47 1 // D12_COMMAND = 0xD0;
48 1 outportb(D12_COMMAND,0xD0);
49 1
50 1 if(bEnable)
51 1 bAddress |= 0x80;
52 1
53 1 //A0=0;
54 1 //D12_DATA = bAddress;
55 1 outportb(D12_DATA,bAddress);
C51 COMPILER V6.12 D12CI 12/16/2004 15:21:56 PAGE 2
56 1
57 1 if(bEPPflags.bits.in_isr == 0)
58 1 ENABLE;
59 1 }
60
61 void D12_SetEndpointEnable(unsigned char bEnable)
62 {
63 1 if(bEPPflags.bits.in_isr == 0)
64 1 DISABLE;
65 1 // A0=1;
66 1 // D12_COMMAND = 0xD8;
67 1 outportb(D12_COMMAND,0xD8);
68 1
69 1 // A0=0;
70 1 if(bEnable)
71 1 // D12_DATA = 1;
72 1 outportb(D12_DATA,1);
73 1 else
74 1 //D12_DATA = 0;
75 1 outportb(D12_DATA,0);
76 1
77 1 if(bEPPflags.bits.in_isr == 0)
78 1 ENABLE;
79 1 }
80
81 void D12_SetMode(unsigned char bConfig, unsigned char bClkDiv)
82 {
83 1 if(bEPPflags.bits.in_isr == 0)
84 1 DISABLE;
85 1 // A0=1;
86 1 // D12_COMMAND = 0xF3;
87 1 outportb(D12_COMMAND,0xF3);
88 1 // A0=0;
89 1 // D12_DATA = bConfig;
90 1 // D12_DATA = bClkDiv;
91 1 outportb(D12_DATA,bConfig);
92 1 outportb(D12_DATA,bClkDiv);
93 1
94 1 if(bEPPflags.bits.in_isr == 0)
95 1 ENABLE;
96 1 }
97 /*
98 void D12_SetDMA(unsigned char bMode)
99 {
100 if(bEPPflags.bits.in_isr == 0)
101 DISABLE;
102
103 D12_COMMAND = 0xFB;
104 D12_DATA = bMode;
105
106 if(bEPPflags.bits.in_isr == 0)
107 ENABLE;
108 }
109 */
110 unsigned short D12_ReadInterruptRegister(void)
111 {
112 1 unsigned char b1;
113 1 unsigned int j;
114 1 // A0=1;
115 1 // D12_COMMAND = 0xF4;
116 1 outportb(D12_COMMAND,0xF4);
117 1 // A0=0;
C51 COMPILER V6.12 D12CI 12/16/2004 15:21:56 PAGE 3
118 1 // b1 = D12_DATA;
119 1 // j = D12_DATA;
120 1 b1=inportb(D12_DATA);
121 1 j=inportb(D12_DATA);
122 1 j <<= 8;
123 1 j += b1;
124 1
125 1 return j;
126 1 }
127
128 unsigned char D12_SelectEndpoint(unsigned char bEndp)
129 {
130 1 unsigned char c;
131 1
132 1 if(bEPPflags.bits.in_isr == 0)
133 1 DISABLE;
134 1 // A0=1;
135 1 // D12_COMMAND = bEndp;
136 1 outportb(D12_COMMAND,bEndp);
137 1 // A0=0;
138 1 // c = D12_DATA;
139 1 c=inportb(D12_DATA);
140 1
141 1 if(bEPPflags.bits.in_isr == 0)
142 1 ENABLE;
143 1
144 1 return c;
145 1 }
146
147 unsigned char D12_ReadLastTransactionStatus(unsigned char bEndp)
148 {
149 1 // A0=1;
150 1 // D12_COMMAND = 0x40 + bEndp;
151 1 outportb(D12_COMMAND,0x40+bEndp);
152 1 // A0=0;
153 1 //return D12_DATA;
154 1 return inportb(D12_DATA);
155 1 }
156
157 /*
158 unsigned char D12_ReadEndpointStatus(unsigned char bEndp)
159 {
160 unsigned char c;
161
162 if(bEPPflags.bits.in_isr == 0)
163 DISABLE;
164
165 D12_COMMAND = 0x40 + bEndp;
166 c = D12_DATA;
167
168 if(bEPPflags.bits.in_isr == 0)
169 ENABLE;
170
171 return c;
172 }
173 */
174
175 void D12_SetEndpointStatus(unsigned char bEndp, unsigned char bStalled)
176 {
177 1 if(bEPPflags.bits.in_isr == 0)
178 1 DISABLE;
179 1 // A0=1;
C51 COMPILER V6.12 D12CI 12/16/2004 15:21:56 PAGE 4
180 1 // D12_COMMAND = 0x40 + bEndp;
181 1 // A0=0;
182 1 // D12_DATA = bStalled;
183 1 outportb(D12_COMMAND,0x40+bEndp);
184 1 outportb(D12_DATA,bStalled);
185 1
186 1 if(bEPPflags.bits.in_isr == 0)
187 1 ENABLE;
188 1 }
189
190 /*
191 void D12_SendResume(void)
192 {
193 D12_COMMAND = 0xF6;
194 }
195
196
197 unsigned short D12_ReadCurrentFrameNumber(void)
198 {
199 unsigned short i,j;
200
201 if(bEPPflags.bits.in_isr == 0)
202 DISABLE;
203
204 D12_COMMAND = 0xF5;
205 i = D12_DATA;
206 j = D12_DATA;
207
208 i += (j<<8);
209
210 if(bEPPflags.bits.in_isr == 0)
211 ENABLE;
212
213 return i;
214 }
215 */
216 /*
217 unsigned short D12_ReadChipID(void)
218 {
219 unsigned short i,j;
220
221 if(bEPPflags.bits.in_isr == 0)
222 DISABLE;
223
224 outportb(portbase+D12_COMMAND, 0xFD);
225 i=inportb(portbase+D12_DATA);
226 j=inportb(portbase+D12_DATA);
227 i += (j<<8);
228
229 if(bEPPflags.bits.in_isr == 0)
230 ENABLE;
231
232 return i;
233 }
234 */
235
236 unsigned char D12_ReadEndpoint(unsigned char endp, unsigned char len, unsigned char * buf)
237 {
238 1 unsigned char i, j;
239 1
240 1 if(bEPPflags.bits.in_isr == 0)
241 1 DISABLE;
C51 COMPILER V6.12 D12CI 12/16/2004 15:21:56 PAGE 5
242 1 // A0=1;
243 1 // D12_COMMAND = endp;
244 1 // A0=0;
245 1 // i=D12_DATA;
246 1 outportb(D12_COMMAND,endp);
247 1 i=inportb(D12_DATA);
248 1 if((i & D12_FULLEMPTY) == 0)
249 1 {
250 2 if(bEPPflags.bits.in_isr == 0)
251 2 ENABLE;
252 2 return 0;
253 2 }
254 1 // A0=1;
255 1 // D12_COMMAND = 0xF0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -