📄 d12ci.lst
字号:
C51 COMPILER V7.09 D12CI 03/30/2005 12:31:37 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE D12CI
OBJECT MODULE PLACED IN d12ci.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE d12ci.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "d12ci.h"
2 #include "main.h"
3 #include "hal.h"
4 //不用修改
5
6 extern EPPFLAGS bEPPflags;
7
8 //---------------------------------
9 void outportcmd(unsigned char value)
10 {
11 1 *((unsigned char xdata *)D12_COMMAND)=value;
12 1 }
13 void outportdata(unsigned char value)
14 {
15 1 *((unsigned char xdata *)D12_DATA)=value;
16 1 }
17
18 unsigned char inportb(void)
19 {
20 1 return *((unsigned xdata *)D12_DATA);
21 1 }
22 //--------------------------
23 void D12_SetAddressEnable(unsigned char bAddress, unsigned char bEnable)
24 {
25 1 if(bEPPflags.bits.in_isr == 0)
26 1 DISABLE;
27 1
28 1 outportcmd(0xD0);
29 1 if(bEnable)
30 1 bAddress |= 0x80;
31 1 outportdata(bAddress);
32 1
33 1 if(bEPPflags.bits.in_isr == 0)
34 1 ENABLE;
35 1 }
36
37 void D12_SetEndpointEnable(unsigned char bEnable)
38 {
39 1 if(bEPPflags.bits.in_isr == 0)
40 1 DISABLE;
41 1
42 1 outportcmd(0xD8);
43 1 if(bEnable)
44 1 outportdata(1);
45 1 else
46 1 outportdata(0);
47 1
48 1 if(bEPPflags.bits.in_isr == 0)
49 1 ENABLE;
50 1 }
51
52 void D12_SetMode(unsigned char bConfig, unsigned char bClkDiv)
53 {
54 1 if(bEPPflags.bits.in_isr == 0)
55 1 DISABLE;
C51 COMPILER V7.09 D12CI 03/30/2005 12:31:37 PAGE 2
56 1 outportcmd(0xF3);
57 1 outportdata(bConfig);
58 1 outportdata(bClkDiv);
59 1 if(bEPPflags.bits.in_isr == 0)
60 1 ENABLE;
61 1
62 1 }
63
64 void D12_SetDMA(unsigned char bMode)
65 {
66 1
67 1 if(bEPPflags.bits.in_isr == 0)
68 1 DISABLE;
69 1 outportcmd(0xFB);
70 1 outportdata(bMode);
71 1 if(bEPPflags.bits.in_isr == 0)
72 1 ENABLE;
73 1
74 1 }
75 unsigned char D12_ReadEndpointStatus(unsigned char bEndp)
76 {
77 1 unsigned char c;
78 1
79 1 if(bEPPflags.bits.in_isr == 0)
80 1 DISABLE;
81 1
82 1 outportcmd(0x80 + bEndp);
83 1 c = inportb();
84 1
85 1 if(bEPPflags.bits.in_isr == 0)
86 1 ENABLE;
87 1
88 1 return c;
89 1 }
90
91 void D12_SetEndpointStatus(unsigned char bEndp, unsigned char bStalled)
92 {
93 1 if(bEPPflags.bits.in_isr == 0)
94 1 DISABLE;
95 1
96 1 outportcmd(0x40 + bEndp);
97 1 outportdata(bStalled);
98 1
99 1 if(bEPPflags.bits.in_isr == 0)
100 1 ENABLE;
101 1 }
102
103 unsigned char D12_WriteEndpoint(unsigned char endp, unsigned char len, unsigned char * buf)
104 {
105 1 unsigned char i;
106 1
107 1 if(bEPPflags.bits.in_isr == 0)
108 1 DISABLE;
109 1 //---------------------
110 1 outportcmd(endp); //选择端点
111 1 inportb(); //读入满/空状态
112 1
113 1 outportcmd(0xF0); //写缓冲区命令
114 1 outportdata(0);
115 1 outportdata(len);
116 1
117 1 for(i=0; i<len; i++)
C51 COMPILER V7.09 D12CI 03/30/2005 12:31:37 PAGE 3
118 1 outportdata(*(buf+i));
119 1
120 1 outportcmd(0xFA); //驶购冲区有效
121 1
122 1 //--------------------------------
123 1 if(bEPPflags.bits.in_isr == 0)
124 1 ENABLE;
125 1
126 1 return len;
127 1 }
128 void D12_AcknowledgeEndpoint(unsigned char endp)
129 {
130 1 outportcmd( endp); //选择端点
131 1 outportcmd(0xF1); //应答设置
132 1 if(endp == 0)
133 1 outportcmd(0xF2); //缓冲区清零
134 1 }
135 unsigned char D12_ReadInterruptRegister(void)
136 {
137 1 unsigned char b1;
138 1 unsigned int j;
139 1 j=0;
140 1 //outportb(D12_COMMAND, 0xF4);
141 1 outportcmd(0xF4);
142 1 b1 = inportb();
143 1 j = inportb();
144 1 return b1;
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.09 D12CI 03/30/2005 12:31:37 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 = 537 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 6
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 + -