📄 cmds.lst
字号:
C51 COMPILER V7.50 CMDS 04/22/2005 11:54:44 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE CMDS
OBJECT MODULE PLACED IN cmds.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE cmds.c DEBUG OBJECTEXTEND SRC(.\cmds.SRC)
line level source
1 /*
2 //*************************************************************************
3 //
4 // BASBA P R O P R I E T A R Y
5 //
6 // COPYRIGHT (c) 2003 BY BASBA USA.
7 // -- ALL RIGHTS RESERVED --
8 //
9 // File Name: D12CI.C
10 // Author: Shuming Yu
11 // Created: 10 May 2003
12 // Modified:
13 // Revision: 1.0
14 //
15 //*************************************************************************
16 */
17 #include <reg51.h> /* special function register declarations */
18
19 #include "d12hal.h"
20 #include "mainloop.h"
21 #include "cmds.h"
22
23 extern EPPFLAGS bEPPflags;
24
25 void D12_SetAddressEnable(unsigned char bAddress, unsigned char bEnable)
26 {
27 1 if(bEPPflags.bits.in_isr == 0)
28 1 DISABLE;
29 1
30 1 outportb(D12_COMMAND, 0xD0);
31 1 if(bEnable)
32 1 bAddress |= 0x80;
33 1 outportb(D12_DATA, bAddress);
34 1
35 1 if(bEPPflags.bits.in_isr == 0)
36 1 ENABLE;
37 1 }
38
39 void D12_SetEndpointEnable(unsigned char bEnable)
40 {
41 1 if(bEPPflags.bits.in_isr == 0)
42 1 DISABLE;
43 1
44 1 outportb(D12_COMMAND, 0xD8);
45 1 if(bEnable)
46 1 outportb(D12_DATA, 1);
47 1 else
48 1 outportb(D12_DATA, 0);
49 1
50 1 if(bEPPflags.bits.in_isr == 0)
51 1 ENABLE;
52 1 }
53
54 void D12_SetMode(unsigned char bConfig, unsigned char bClkDiv)
55 {
C51 COMPILER V7.50 CMDS 04/22/2005 11:54:44 PAGE 2
56 1 if(bEPPflags.bits.in_isr == 0)
57 1 DISABLE;
58 1
59 1 outportb(D12_COMMAND, 0xF3);
60 1 outportb(D12_DATA, bConfig);
61 1 outportb(D12_DATA, bClkDiv);
62 1
63 1 if(bEPPflags.bits.in_isr == 0)
64 1 ENABLE;
65 1 }
66
67 void D12_SetDMA(unsigned char bMode)
68 {
69 1 if(bEPPflags.bits.in_isr == 0)
70 1 DISABLE;
71 1
72 1 outportb(D12_COMMAND, 0xFB);
73 1 outportb(D12_DATA, bMode);
74 1
75 1 if(bEPPflags.bits.in_isr == 0)
76 1 ENABLE;
77 1 }
78
79 unsigned short D12_ReadInterruptRegister(void)
80 {
81 1 unsigned char b1;
82 1 unsigned int j;
83 1
84 1 outportb(D12_COMMAND, 0xF4);
85 1 b1 = inportb(D12_DATA);
86 1 j = inportb(D12_DATA);
87 1
88 1 j <<= 8;
89 1 j += b1;
90 1
91 1 return j;
92 1 }
93
94 unsigned char D12_SelectEndpoint(unsigned char bEndp)
95 {
96 1 unsigned char c;
97 1
98 1 if(bEPPflags.bits.in_isr == 0)
99 1 DISABLE;
100 1
101 1 outportb(D12_COMMAND, bEndp);
102 1 c = inportb(D12_DATA);
103 1
104 1 if(bEPPflags.bits.in_isr == 0)
105 1 ENABLE;
106 1
107 1 return c;
108 1 }
109
110 unsigned char D12_ReadLastTransactionStatus(unsigned char bEndp)
111 {
112 1 outportb(D12_COMMAND, 0x40 + bEndp);
113 1 return inportb(D12_DATA);
114 1 }
115
116 unsigned char D12_ReadEndpointStatus(unsigned char bEndp)
117 {
C51 COMPILER V7.50 CMDS 04/22/2005 11:54:44 PAGE 3
118 1 unsigned char c;
119 1
120 1 if(bEPPflags.bits.in_isr == 0)
121 1 DISABLE;
122 1
123 1 outportb(D12_COMMAND, 0x80 + bEndp);
124 1 c = inportb(D12_DATA);
125 1
126 1 if(bEPPflags.bits.in_isr == 0)
127 1 ENABLE;
128 1
129 1 return c;
130 1 }
131
132 void D12_SetEndpointStatus(unsigned char bEndp, unsigned char bStalled)
133 {
134 1 if(bEPPflags.bits.in_isr == 0)
135 1 DISABLE;
136 1
137 1 outportb(D12_COMMAND, 0x40 + bEndp);
138 1 outportb(D12_DATA, bStalled);
139 1
140 1 if(bEPPflags.bits.in_isr == 0)
141 1 ENABLE;
142 1 }
143
144 void D12_SendResume(void)
145 {
146 1 outportb(D12_COMMAND, 0xF6);
147 1 }
148
149 unsigned short D12_ReadCurrentFrameNumber(void)
150 {
151 1 unsigned short i,j;
152 1
153 1 if(bEPPflags.bits.in_isr == 0)
154 1 DISABLE;
155 1
156 1 outportb(D12_COMMAND, 0xF5);
157 1 i= inportb(D12_DATA);
158 1 j = inportb(D12_DATA);
159 1
160 1 i += (j<<8);
161 1
162 1 if(bEPPflags.bits.in_isr == 0)
163 1 ENABLE;
164 1
165 1 return i;
166 1 }
167
168 unsigned short D12_ReadChipID(void)
169 {
170 1 unsigned short i,j;
171 1
172 1 if(bEPPflags.bits.in_isr == 0)
173 1 DISABLE;
174 1
175 1 outportb(portbase+D12_COMMAND, 0xFD);
176 1 i=inportb(portbase+D12_DATA);
177 1 j=inportb(portbase+D12_DATA);
178 1 i += (j<<8);
179 1
C51 COMPILER V7.50 CMDS 04/22/2005 11:54:44 PAGE 4
180 1 if(bEPPflags.bits.in_isr == 0)
181 1 ENABLE;
182 1
183 1 return i;
184 1 }
185
186 unsigned char D12_ReadEndpoint(unsigned char endp, unsigned char * buf, unsigned char len)
187 {
188 1 unsigned char i, j;
189 1
190 1 if(bEPPflags.bits.in_isr == 0)
191 1 DISABLE;
192 1
193 1 outportb(D12_COMMAND, endp);
194 1 if((inportb(D12_DATA) & D12_FULLEMPTY) == 0) {
195 2 if(bEPPflags.bits.in_isr == 0)
196 2 ENABLE;
197 2 return 0;
198 2 }
199 1
200 1 outportb(D12_COMMAND, 0xF0);
201 1 j = inportb(D12_DATA);
202 1 j = inportb(D12_DATA);
203 1
204 1 if(j > len)
205 1 j = len;
206 1
207 1 for(i=0; i<j; i++)
208 1 *(buf+i) = inportb(D12_DATA);
209 1
210 1 outportb(D12_COMMAND, 0xF2);
211 1
212 1 if(bEPPflags.bits.in_isr == 0)
213 1 ENABLE;
214 1
215 1 return j;
216 1 }
217
218 // D12_ReadMainEndpoint() added by V2.2 to support double-buffering.
219 // Caller should assume maxium 128 bytes of returned data.
220 unsigned char D12_ReadMainEndpoint(unsigned char * buf)
221 {
222 1 unsigned char i, j, k = 0, bDblBuf = 1;
223 1
224 1 if(bEPPflags.bits.in_isr == 0)
225 1 DISABLE;
226 1
227 1 // outportb(D12_COMMAND, 0x84);
228 1 // if( (inportb(D12_DATA) & 0x60) == 0x60)
229 1 bDblBuf = 2;
230 1
231 1 while(bDblBuf) {
232 2 outportb(D12_COMMAND, 4);
233 2 if((inportb(D12_DATA) & D12_FULLEMPTY) == 0)
234 2 break;
235 2
236 2 outportb(D12_COMMAND, 0xF0);
237 2 j = inportb(D12_DATA);
238 2 j = inportb(D12_DATA);
239 2
240 2 for(i=0; i<j; i++)
241 2 *(buf+i+k) = inportb(D12_DATA);
C51 COMPILER V7.50 CMDS 04/22/2005 11:54:44 PAGE 5
242 2
243 2 k += j;
244 2
245 2 outportb(D12_COMMAND, 0xF2);
246 2
247 2 bDblBuf --;
248 2 }
249 1
250 1 if(bEPPflags.bits.in_isr == 0)
251 1 ENABLE;
252 1
253 1 return k;
254 1 }
255
256 unsigned char D12_WriteEndpoint(unsigned char endp, unsigned char * buf, unsigned char len)
257 {
258 1 unsigned char i;
259 1
260 1 if(bEPPflags.bits.in_isr == 0)
261 1 DISABLE;
262 1
263 1 /* Select Endpoint */
264 1 outportb(D12_COMMAND, endp);
265 1 inportb(D12_DATA);
266 1
267 1 /* Write Buffer */
268 1 outportb(D12_COMMAND, 0xF0);
269 1 outportb(D12_DATA, 0); /* first byte is reserved */
270 1 outportb(D12_DATA, len); /* how many actual data bytes to be sent to host */
271 1
272 1 for(i=0; i<len; i++)
273 1 outportb(D12_DATA, *(buf+i));
274 1
275 1 /* Inform D12 that the buffer is now fully loaded and ready to send data out */
276 1 outportb(D12_COMMAND, 0xFA);
277 1
278 1 if(bEPPflags.bits.in_isr == 0)
279 1 ENABLE;
280 1
281 1 return len;
282 1 }
283
284 /* When a SETUP token is received, the data in the endpoint buffer is locked, this means
285 that a ClearBuffer command or Validate command has no effect till Ack_SETUP issued */
286 void D12_AcknowledgeEndpoint(unsigned char endp)
287 {
288 1 outportb(D12_COMMAND, endp);
289 1 outportb(D12_COMMAND, 0xF1);
290 1 if(endp == 0)
291 1 outportb(D12_COMMAND, 0xF2);
292 1 }
293
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 972 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 33
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
C51 COMPILER V7.50 CMDS 04/22/2005 11:54:44 PAGE 6
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -