?? d12ci.lst
字號:
C51 COMPILER V7.01 D12CI 08/18/2003 08:43:21 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE D12CI
OBJECT MODULE PLACED IN D12ci.OBJ
COMPILER INVOKED BY: C:\Keil7.0\C51\BIN\C51.EXE D12ci.c OPTIMIZE(2,SPEED) DEBUG OBJECTEXTEND TABS(6)
stmt level source
1 #include <reg51.h> /* special function register declarations */
2 #include "mainloop.h"
3 #include "d12ci.h"
4 #include "absacc.h"
5 #include "epphal.h"
6
7 #define D12_DATA 0xff02
8 #define D12_COMMAND 0xff03
9
10 extern EPPFLAGS bEPPflags;
11
12 //設(shè)置地址使能
13 void D12_SetAddressEnable(unsigned char bAddress, unsigned char bEnable)
14 {
15 1 if(bEPPflags.bits.in_isr == 0)
16 1 DISABLE;
17 1
18 1 outportb(D12_COMMAND, 0xD0);//輸出指令
19 1 if(bEnable)
20 1 bAddress |= 0x80;
21 1 outportb(D12_DATA, bAddress);//設(shè)置地址
22 1
23 1 if(bEPPflags.bits.in_isr == 0)
24 1 ENABLE;
25 1 }
26
27 //設(shè)置端點使能
28 void D12_SetEndpointEnable(unsigned char bEnable)
29 {
30 1 if(bEPPflags.bits.in_isr == 0)
31 1 DISABLE;
32 1
33 1 outportb(D12_COMMAND, 0xD8);//輸出指令
34 1 if(bEnable)
35 1 outportb(D12_DATA, 1);//設(shè)置端點允許
36 1 else
37 1 outportb(D12_DATA, 0);//設(shè)置端點禁止
38 1
39 1 if(bEPPflags.bits.in_isr == 0)
40 1 ENABLE;
41 1 }
42
43 //模式設(shè)置
44 void D12_SetMode(unsigned char bConfig, unsigned char bClkDiv)
45 {
46 1 if(bEPPflags.bits.in_isr == 0)
47 1 DISABLE;
48 1
49 1 outportb(D12_COMMAND, 0xF3);//設(shè)置模式
50 1 outportb(D12_DATA, bConfig);
51 1 outportb(D12_DATA, bClkDiv);
52 1
53 1 if(bEPPflags.bits.in_isr == 0)
54 1 ENABLE;
55 1 }
C51 COMPILER V7.01 D12CI 08/18/2003 08:43:21 PAGE 2
56
57 //DMA工作方式設(shè)置
58 void D12_SetDMA(unsigned char bMode)
59 {
60 1 if(bEPPflags.bits.in_isr == 0)
61 1 DISABLE;
62 1
63 1 outportb(D12_COMMAND, 0xFB);//設(shè)置DMA工作方式
64 1 outportb(D12_DATA, bMode);
65 1
66 1 if(bEPPflags.bits.in_isr == 0)
67 1 ENABLE;
68 1 }
69
70 //讀取中斷寄存器
71 unsigned short D12_ReadInterruptRegister(void)
72 {
73 1 unsigned char b1;
74 1 unsigned int j;
75 1
76 1 outportb(D12_COMMAND, 0xF4);//讀取中斷寄存器
77 1 b1 = inportb(D12_DATA);
78 1 j = inportb(D12_DATA);
79 1
80 1 j <<= 8;
81 1 j += b1;
82 1
83 1 return j;
84 1 }
85
86 //端點選擇
87 unsigned char D12_SelectEndpoint(unsigned char bEndp)
88 {
89 1 unsigned char c;
90 1
91 1 if(bEPPflags.bits.in_isr == 0)
92 1 DISABLE;
93 1
94 1 outportb(D12_COMMAND, bEndp);//端點選擇
95 1 c = inportb(D12_DATA);
96 1
97 1 if(bEPPflags.bits.in_isr == 0)
98 1 ENABLE;
99 1
100 1 return c;
101 1 }
102
103 //讀取最后傳輸狀態(tài)
104 unsigned char D12_ReadLastTransactionStatus(unsigned char bEndp)
105 {
106 1 outportb(D12_COMMAND, 0x40 + bEndp);//返回最后傳輸狀態(tài)
107 1 return inportb(D12_DATA);
108 1 }
109
110 //讀取端點狀態(tài)
111 unsigned char D12_ReadEndpointStatus(unsigned char bEndp)
112 {
113 1 unsigned char c;
114 1
115 1 if(bEPPflags.bits.in_isr == 0)
116 1 DISABLE;
117 1
C51 COMPILER V7.01 D12CI 08/18/2003 08:43:21 PAGE 3
118 1 outportb(D12_COMMAND, 0x80 + bEndp);//讀取端點狀態(tài)
119 1 c = inportb(D12_DATA);
120 1
121 1 if(bEPPflags.bits.in_isr == 0)
122 1 ENABLE;
123 1
124 1 return c;
125 1 }
126
127 //設(shè)置端點狀態(tài)
128 void D12_SetEndpointStatus(unsigned char bEndp, unsigned char bStalled)
129 {
130 1 if(bEPPflags.bits.in_isr == 0)
131 1 DISABLE;
132 1
133 1 outportb(D12_COMMAND, 0x40 + bEndp);//設(shè)置端點狀態(tài)
134 1 outportb(D12_DATA, bStalled);
135 1
136 1 if(bEPPflags.bits.in_isr == 0)
137 1 ENABLE;
138 1 }
139
140 //傳輸恢復
141 void D12_SendResume(void)
142 {
143 1 outportb(D12_COMMAND, 0xF6);//設(shè)置發(fā)送恢復
144 1 }
145
146 //讀取當前幀號
147 unsigned short D12_ReadCurrentFrameNumber(void)
148 {
149 1 unsigned short i,j;
150 1
151 1 if(bEPPflags.bits.in_isr == 0)
152 1 DISABLE;
153 1
154 1 outportb(D12_COMMAND, 0xF5);//讀取當前幀數(shù)目
155 1 i= inportb(D12_DATA);
156 1 j = inportb(D12_DATA);
157 1
158 1 i += (j<<8);
159 1
160 1 if(bEPPflags.bits.in_isr == 0)
161 1 ENABLE;
162 1
163 1 return i;
164 1 }
165
166 unsigned short D12_ReadChipID(void)
167 {
168 1 unsigned short i,j;
169 1
170 1 if(bEPPflags.bits.in_isr == 0)
171 1 DISABLE;
172 1
173 1 outportb(D12_COMMAND, 0xFD);
174 1 i=inportb(D12_DATA);
175 1 j=inportb(D12_DATA);
176 1 i += (j<<8);
177 1
178 1 if(bEPPflags.bits.in_isr == 0)
179 1 ENABLE;
C51 COMPILER V7.01 D12CI 08/18/2003 08:43:21 PAGE 4
180 1
181 1 return i;
182 1 }
183
184 //讀取端點數(shù)據(jù)
185 unsigned char D12_ReadEndpoint(unsigned char endp, unsigned char len, unsigned char * buf)
186 {
187 1 unsigned char i, j;
188 1
189 1 if(bEPPflags.bits.in_isr == 0)
190 1 DISABLE;
191 1
192 1 outportb(D12_COMMAND, endp);
193 1 if((inportb(D12_DATA) & D12_FULLEMPTY) == 0) {
194 2 if(bEPPflags.bits.in_isr == 0)
195 2 ENABLE;
196 2 return 0;
197 2 }
198 1
199 1 outportb(D12_COMMAND, 0xF0);
200 1 j = inportb(D12_DATA);
201 1 j = inportb(D12_DATA);
202 1
203 1 if(j > len)
204 1 j = len;
205 1
206 1 for(i=0; i<j; i++)
207 1 *(buf+i) = inportb(D12_DATA);
208 1
209 1 outportb(D12_COMMAND, 0xF2);
210 1
211 1 if(bEPPflags.bits.in_isr == 0)
212 1 ENABLE;
213 1
214 1 return j;
215 1 }
216
217 //寫端點
218 unsigned char D12_WriteEndpoint(unsigned char endp, unsigned char len, unsigned char * buf)
219 {
220 1 unsigned char i;
221 1
222 1 if(bEPPflags.bits.in_isr == 0)
223 1 DISABLE;
224 1
225 1 outportb(D12_COMMAND, endp);
226 1 i = inportb(D12_DATA);
227 1
228 1 outportb(D12_COMMAND, 0xF0);
229 1 outportb(D12_DATA, 0);
230 1 outportb(D12_DATA, len);
231 1
232 1 for(i=0; i<len; i++)
233 1 outportb(D12_DATA, *(buf+i));
234 1
235 1 outportb(D12_COMMAND, 0xFA);
236 1
237 1 if(bEPPflags.bits.in_isr == 0)
238 1 ENABLE;
239 1
240 1 return len;
241 1 }
C51 COMPILER V7.01 D12CI 08/18/2003 08:43:21 PAGE 5
242
243 //設(shè)置端點應答
244 void D12_AcknowledgeEndpoint(unsigned char endp)
245 {
246 1 outportb(D12_COMMAND, endp);
247 1 outportb(D12_COMMAND, 0xF1);
248 1 if(endp == 0)
249 1 outportb(D12_COMMAND, 0xF2);
250 1 }
251
252 //輸出數(shù)據(jù)
253 void outportb(unsigned int Addr, unsigned char Data)
254 {
255 1 *((unsigned char xdata *) Addr) = Data;
256 1 }
257
258 //輸入數(shù)據(jù)
259 unsigned char inportb(unsigned int Addr)
260 {
261 1 return *((unsigned char xdata *) Addr);
262 1 }
263
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1007 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 43
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 + -