📄 d12ci.lst
字号:
C51 COMPILER V7.01 D12CI 11/14/2003 09:44:51 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE D12CI
OBJECT MODULE PLACED IN D12CI.OBJ
COMPILER INVOKED BY: E:\Keil\C51\BIN\c51.exe D12CI.C DB OE COMPACT ROM(LARGE)
stmt level source
1 //#pragma SYMBOLS
2 //#include<stdio.h>
3 #include"X52.H"
4 #include"HAL.H"
5 #include"D12CI.H"
6 #include"MAIN.H"
7 /***********************************************************************
8 *this program include some PDIUSBD12 command set to access pdiusbd12 *
9 * so as to simplify the device programming *
10 ***********************************************************************/
11 extern void outportb(unsigned char port,unsigned char val);
12 extern unsigned char inportb(unsigned char port);
13 extern EPPFLAGS bEPPflags;
14
15 void D12_SetAddressEnable(unsigned char bAddress ,unsigned char bbEnable)
16 {
17 1 if(bEPPflags.bits.in_isr==0)
18 1 {
19 2 DISABLE;
20 2 }
21 1
22 1 outportb(D12_COMMAND,0xD0);
23 1
24 1 if(bbEnable)
25 1
26 1 bAddress|=0x80;
27 1
28 1 outportb(D12_DATA,bAddress);
29 1
30 1 if(bEPPflags.bits.in_isr==0)
31 1
32 1 ENABLE;
33 1 }
34 void D12_SetEndpointEnable(unsigned char bEnable)
35 {
36 1 if (bEPPflags.bits.in_isr==0)
37 1
38 1 {
39 2 DISABLE;
40 2 }
41 1 outportb(D12_COMMAND,0xD8);
42 1
43 1 if (bEnable)
44 1 {
45 2 outportb(D12_DATA,1);
46 2 }
47 1
48 1 else
49 1 {
50 2 outportb(D12_DATA,0);
51 2 }
52 1
53 1 if(bEPPflags.bits.in_isr==0)
54 1
55 1 ENABLE;
C51 COMPILER V7.01 D12CI 11/14/2003 09:44:51 PAGE 2
56 1
57 1 }
58 void D12_SetMode(unsigned char bConfig ,unsigned char bClkDiv)
59 {
60 1 if(bEPPflags.bits.in_isr==0)
61 1
62 1 {
63 2 DISABLE;
64 2 }
65 1
66 1 outportb(D12_COMMAND,0xF3); //set mode command
67 1
68 1 outportb(D12_DATA,bConfig); //INCLUDE CONFIGRATION BITS
69 1
70 1 outportb(D12_DATA,bClkDiv); //INCLUDE THE CLOCK DIVISIONG FACTOR TYPE
71 1
72 1 if(bEPPflags.bits.in_isr==0)
73 1
74 1 ENABLE;
75 1
76 1 }
77
78 unsigned short D12_ReadInterruptRegister(void)
79 {
80 1 unsigned char b1;
81 1 unsigned int j;
82 1
83 1 outportb(D12_COMMAND,0xF4);
84 1
85 1 b1=inportb(D12_DATA); // low eight bits
86 1
87 1 j=inportb(D12_DATA); //high eight bits
88 1
89 1 j<<=8; //move eight bits to left
90 1 //b1&=0x00FF;
91 1 j+= b1; //make sixteen bits flags
92 1 //j=j;
93 1
94 1 return j; //return interrupt register bits
95 1
96 1 }
97 //THIS COMMAND INITIALIZES AN INTERNAL POINTER TO THE SATART OF THE SELECTED BUFFER
98 unsigned char D12_SelectEndpoint(unsigned char bEndp)
99
100 {
101 1 unsigned char c;
102 1
103 1 if(bEPPflags.bits.in_isr == 0)
104 1
105 1 {
106 2 DISABLE;
107 2 }
108 1
109 1 outportb(D12_COMMAND,bEndp); //
110 1
111 1 c = inportb(D12_DATA);
112 1
113 1 if(bEPPflags.bits.in_isr == 0)
114 1
115 1 ENABLE;
116 1
117 1 return c;
C51 COMPILER V7.01 D12CI 11/14/2003 09:44:51 PAGE 3
118 1
119 1 }
120 unsigned char D12_ReadLastTransactionStatus(unsigned char bEndp)
121 {
122 1
123 1 outportb(D12_COMMAND,0x40 + bEndp);
124 1
125 1 return inportb(D12_DATA);
126 1
127 1 }
128
129 /*unsigned char D12_ReadEndpointStatus(unsigned char bEndp)
130 {
131 unsigned char c;
132
133 if(bEPPflags.bits.in_isr == 0)
134
135 DISABLE;
136
137 outportb(D12_COMMAND,0x80 + bEndp);
138
139 c = inportb(D12_DATA);
140
141 if(bEPPflags.bits.in_isr == 0)
142 ENABLE;
143
144 return c;
145 }*/
146
147
148
149 void D12_SetEndpointStatus(unsigned char bEndp, unsigned char bStalled)reentrant
150 {
151 1 if(bEPPflags.bits.in_isr == 0)
152 1
153 1 {
154 2 DISABLE;
155 2 }
156 1
157 1 outportb(D12_COMMAND,0x40 + bEndp);
158 1
159 1 outportb(D12_DATA,bStalled);
160 1
161 1 if(bEPPflags.bits.in_isr == 0)
162 1
163 1 ENABLE;
164 1 }
165 /*void D12_SendResume(void)
166 {
167
168 outportb(D12_COMMAND,0xF6);
169
170 }
171 */
172
173 unsigned char D12_WriteBuffer(unsigned char endp ,unsigned char *buf,unsigned char len)reentrant
174 {
175 1
176 1 unsigned char i;
177 1
178 1 if(bEPPflags.bits.in_isr == 0)
179 1 {
C51 COMPILER V7.01 D12CI 11/14/2003 09:44:51 PAGE 4
180 2 DISABLE;
181 2 }
182 1 outportb(D12_COMMAND,endp); //选择端点
183 1
184 1 inportb(D12_DATA); //读入满/空状态
185 1
186 1 //**********************************************
187 1 outportb(D12_COMMAND,0xF0); //写缓冲区命令
188 1
189 1 outportb(D12_DATA,0);
190 1
191 1 outportb(D12_DATA,len);
192 1
193 1 for(i=0; i<len; i++)
194 1 {
195 2 outportb(D12_DATA, *(buf+i));
196 2 }
197 1
198 1 outportb(D12_COMMAND,0xFA); //VALIDATE BUFFER
199 1
200 1
201 1 if(bEPPflags.bits.in_isr == 0)
202 1
203 1 {
204 2 ENABLE;
205 2 }
206 1 return len;
207 1 }
208
209 unsigned char D12_ReadBuffer(unsigned char endp ,unsigned char *buf,unsigned char len)
210 {
211 1
212 1 unsigned char i, j;
213 1
214 1 if(bEPPflags.bits.in_isr == 0)
215 1
216 1 {
217 2 DISABLE;
218 2 }
219 1 outportb(D12_COMMAND,endp); //选择端点
220 1
221 1 if((inportb(D12_DATA) & D12_FULLEMPTY) == 0) //如果缓冲区为空,则返回
222 1 {
223 2 if(bEPPflags.bits.in_isr == 0)
224 2
225 2 {
226 3 ENABLE;
227 3 }
228 2
229 2 return 0;
230 2 }
231 1
232 1 outportb(D12_COMMAND,0xF0); //读缓冲区
233 1
234 1 j = inportb(D12_DATA);
235 1
236 1 j = inportb(D12_DATA);
237 1
238 1 if(j > len)
239 1
240 1 j = len;
241 1
C51 COMPILER V7.01 D12CI 11/14/2003 09:44:51 PAGE 5
242 1 for(i=0; i<j; i++)
243 1 {
244 2 *(buf+i) = inportb(D12_DATA);
245 2 }
246 1
247 1 outportb(D12_COMMAND,0xF2); //缓冲区清空
248 1
249 1 if(bEPPflags.bits.in_isr == 0)
250 1 {
251 2 ENABLE;
252 2 }
253 1
254 1 return j;
255 1 }
256
257 void D12_AcknowledgeEndpoint(unsigned char endp)
258 {
259 1
260 1 outportb( D12_COMMAND,endp); //选择端点
261 1
262 1 outportb(D12_COMMAND,0xF1); //应答或确认设置
263 1
264 1 if(endp == 0)
265 1
266 1 outportb(D12_COMMAND,0xF2); //缓冲区清零
267 1
268 1 }
269
270 /*void D12_SetDMA(unsigned char bMode)
271 {
272
273 if(bEPPflags.bits.in_isr == 0)
274 DISABLE;
275
276 outportb(D12_COMMAND,0xFB);
277 outportb(D12_DATA,bMode);
278
279 if(bEPPflags.bits.in_isr == 0)
280 ENABLE;
281
282 }*/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 670 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- 14
DATA SIZE = ---- ----
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 + -