📄 d12ci.lst
字号:
C51 COMPILER V7.01 D12CI 09/27/2003 23:46:50 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE D12CI
OBJECT MODULE PLACED IN d12ci.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE d12ci.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "d12ci.h"
2 #include "mainloop.h"
3 #include "Epphal.h"
4
5 extern EPPFLAGS bEPPflags;
6
7 //---------------------------------
8
9 //--------------------------
10 void D12_SetAddressEnable(unsigned char bAddress, unsigned char bEnable)
11 {
12 1 if(bEPPflags.bits.in_isr == 0)
13 1 DISABLE;
14 1
15 1 outportcmd(0xD0);
16 1 if(bEnable)
17 1 bAddress |= 0x80;
18 1 outportdata(bAddress);
19 1
20 1 if(bEPPflags.bits.in_isr == 0)
21 1 ENABLE;
22 1 }
23
24 void D12_SetEndpointEnable(unsigned char bEnable)
25 {
26 1 if(bEPPflags.bits.in_isr == 0)
27 1 DISABLE;
28 1
29 1 outportcmd(0xD8);
30 1 if(bEnable)
31 1 outportdata(1);
32 1 else
33 1 outportdata(0);
34 1
35 1 if(bEPPflags.bits.in_isr == 0)
36 1 ENABLE;
37 1 }
38
39 void D12_SetMode(unsigned char bConfig, unsigned char bClkDiv)
40 {
41 1 if(bEPPflags.bits.in_isr == 0)
42 1 DISABLE;
43 1 outportcmd(0xF3);
44 1 outportdata(bConfig);
45 1 outportdata(bClkDiv);
46 1 if(bEPPflags.bits.in_isr == 0)
47 1 ENABLE;
48 1
49 1 }
50
51 void D12_SetDMA(unsigned char bMode)
52 {
53 1
54 1 if(bEPPflags.bits.in_isr == 0)
55 1 DISABLE;
C51 COMPILER V7.01 D12CI 09/27/2003 23:46:50 PAGE 2
56 1 outportcmd(0xFB);
57 1 outportdata(bMode);
58 1 if(bEPPflags.bits.in_isr == 0)
59 1 ENABLE;
60 1
61 1 }
62 /*
63 unsigned char D12_GetDMA(void)
64 {
65 outportcmd(0xFB);
66 return(inportb());
67 }
68 */
69 /*
70 unsigned char D12_ReadEndpointStatus(unsigned char bEndp)
71 {
72 unsigned char c;
73
74 if(bEPPflags.bits.in_isr == 0)
75 DISABLE;
76
77 outportcmd(0x80 + bEndp);
78 c = inportb();
79
80 if(bEPPflags.bits.in_isr == 0)
81 ENABLE;
82
83 return c;
84 }
85 */
86 void D12_SetEndpointStatus(unsigned char bEndp, unsigned char bStalled)
87 {
88 1 if(bEPPflags.bits.in_isr == 0)
89 1 DISABLE;
90 1
91 1 outportcmd(0x40 + bEndp);
92 1 outportdata(bStalled);
93 1
94 1 if(bEPPflags.bits.in_isr == 0)
95 1 ENABLE;
96 1 }
97
98
99 /*
100 void D12_SendResume(void)
101 {
102 outportcmd(0xF6);
103 }
104 */
105
106 unsigned char D12_WriteEndpoint(unsigned char endp, unsigned char len, unsigned char * buf)
107 {
108 1 unsigned char i;
109 1
110 1 if(bEPPflags.bits.in_isr == 0)
111 1 DISABLE;
112 1 //---------------------
113 1 outportcmd(endp); //选择端点
114 1 inportb(); //读入满/空状态
115 1
116 1 outportcmd(0xF0); //写缓冲区命令
117 1 outportdata(0);
C51 COMPILER V7.01 D12CI 09/27/2003 23:46:50 PAGE 3
118 1 outportdata(len);
119 1
120 1 for(i=0; i<len; i++)
121 1 outportdata(*(buf+i));
122 1
123 1 outportcmd(0xFA); //驶购冲区有效
124 1
125 1 //--------------------------------
126 1 if(bEPPflags.bits.in_isr == 0)
127 1 ENABLE;
128 1
129 1 return len;
130 1 }
131 void D12_AcknowledgeEndpoint(unsigned char endp)
132 {
133 1 outportcmd(endp); //选择端点
134 1 outportcmd(0xF1); //应答设置
135 1 if(endp == 0)
136 1 outportcmd(0xF2); //缓冲区清零
137 1 }
138 unsigned short D12_ReadInterruptRegister(void)
139 {
140 1 unsigned char b1;
141 1 unsigned int j;
142 1 //outportb(D12_COMMAND, 0xF4);
143 1 outportcmd(0xF4);
144 1 b1 = inportb();
145 1 j = inportb();
146 1 j <<= 8;
147 1 j += b1;
148 1 return j;
149 1 }
150
151 unsigned char D12_ReadLastTransactionStatus(unsigned char bEndp)
152 {
153 1 //outportb(D12_COMMAND, 0x40 + bEndp);
154 1 outportcmd(0x40 + bEndp);
155 1 return inportb();
156 1 }
157 unsigned char D12_ReadEndpoint(unsigned char endp, unsigned char len, unsigned char * buf)
158 {
159 1 unsigned char i, j;
160 1
161 1 if(bEPPflags.bits.in_isr == 0)
162 1 DISABLE;
163 1 //--------------------------------
164 1 outportcmd(endp); //选择端点
165 1 if((inportb() & D12_FULLEMPTY) == 0) { //如果缓冲区为空,则返回
166 2 if(bEPPflags.bits.in_isr == 0)
167 2 ENABLE;
168 2 return 0;
169 2 }
170 1
171 1 outportcmd(0xF0); //读缓冲区
172 1 j = inportb();
173 1 j = inportb();
174 1
175 1 if(j > len)
176 1 j = len;
177 1
178 1 for(i=0; i<j; i++)
179 1 *(buf+i) = inportb();
C51 COMPILER V7.01 D12CI 09/27/2003 23:46:50 PAGE 4
180 1
181 1 outportcmd(0xF2); //缓冲区清空
182 1 //-------------------------------
183 1 if(bEPPflags.bits.in_isr == 0)
184 1 ENABLE;
185 1
186 1 return j;
187 1 }
188
189 unsigned char D12_SelectEndpoint(unsigned char bEndp)
190 {
191 1 unsigned char c;
192 1
193 1 if(bEPPflags.bits.in_isr == 0)
194 1 DISABLE;
195 1
196 1 outportcmd(bEndp);
197 1 c = inportb();
198 1
199 1 if(bEPPflags.bits.in_isr == 0)
200 1 ENABLE;
201 1
202 1 return c;
203 1 }
204
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 515 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 20
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 + -