📄 pdiusb.lst
字号:
C51 COMPILER V8.02 PDIUSB 08/31/2007 18:23:38 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE PDIUSB
OBJECT MODULE PLACED IN .\PDIUSB.obj
COMPILER INVOKED BY: E:\programfiles\Keil51\C51\BIN\C51.EXE ..\..\..\keil\MyProgramLibray\PDIUSB\PDIUSB.c LARGE BROWSE I
-NCDIR(..\..\..\keil\MyProgramLibray;..\..\..\keil\MyProgramLibray\C8051F020;..\..\..\keil\MyProgramLibray\JHD657;..\..\.
-.\keil\MyProgramLibray\PDIUSB) DEBUG OBJECTEXTEND PRINT(.\PDIUSB.lst) OBJECT(.\PDIUSB.obj)
line level source
1 #include <c8051f020.h>
2 #include <c8051f.h>
3 #include <delay.h>
4 #include <pdiusbdef.h>
5
6 //硬件提取层,多路地址/数据总线方式读写
7 void Outportb(unsigned int Addr, unsigned char Data)
8 {
9 1 PDIUSB_A0=Addr;
10 1 Delay1us(5);
11 1 *((unsigned char xdata *) (0x8000+Addr)) = Data;
12 1 }
13
14 unsigned char Inportb(unsigned int Addr)
15 {
16 1 PDIUSB_A0=Addr;
17 1 Delay1us(5);
18 1 return *((unsigned char xdata *)(0x8000+Addr));
19 1 }
20 //**************************************************************************
21 #define D12_DATA 0
22 #define D12_COMMAND 1
23 //PDIUSBD12命令接口函数
24 void D12_SetMode(unsigned char bConfig,unsigned char bClkDiv)
25 {
26 1 PDIUSB_CS=0;
27 1 Outportb(D12_COMMAND,0xF3);
28 1 Outportb(D12_DATA,bConfig);
29 1 Outportb(D12_DATA,bClkDiv);
30 1 PDIUSB_CS=1;
31 1 }
32 //设置端点
33 void D12_SetEndpointStatus(unsigned char bEndp,unsigned char bStalled)
34 {
35 1 PDIUSB_CS=0;
36 1 Outportb(D12_COMMAND,0x40+bEndp);
37 1 Outportb(D12_DATA,bStalled);
38 1 PDIUSB_CS=1;
39 1 }
40 //应答!!!!!
41 void D12_AcknowledgeEndpoint(unsigned char endp)
42 {
43 1 PDIUSB_CS=0;
44 1 Outportb(D12_COMMAND,endp);
45 1 Outportb(D12_COMMAND,0xF1);
46 1 if(endp==0)
47 1 Outportb(D12_COMMAND,0xF2);
48 1 PDIUSB_CS=1;
49 1 }
50 //设置地址使能
51 void D12_SetAddressEnable(unsigned char bAddress,unsigned char bEnable)
52 {
53 1 PDIUSB_CS=0;
C51 COMPILER V8.02 PDIUSB 08/31/2007 18:23:38 PAGE 2
54 1 Outportb(D12_COMMAND,0xd0);
55 1 if(bEnable) bAddress |= 0x80;
56 1 Outportb(D12_DATA,bAddress);
57 1 PDIUSB_CS=1;
58 1 }
59 //设置端点使能
60 void D12_SetEndpointEnable(unsigned char bEnable)
61 {
62 1 PDIUSB_CS=0;
63 1 Outportb(D12_COMMAND,0xD8);
64 1 if(bEnable)
65 1 Outportb(D12_DATA,1);
66 1 else
67 1 Outportb(D12_DATA,0);
68 1 PDIUSB_CS=1;
69 1 }
70 //读中断寄存器
71 unsigned short D12_ReadInterruptRegister(void)
72 {
73 1 unsigned char b1;
74 1 unsigned int j;
75 1 PDIUSB_CS=0;
76 1 Outportb(D12_COMMAND,0xF4);
77 1 b1=Inportb(D12_DATA);
78 1 j=Inportb(D12_DATA);
79 1 j<<=8;
80 1 j+=b1;
81 1 PDIUSB_CS=1;
82 1 return j;
83 1 }
84 //读取端点状态
85 unsigned char D12_ReadEndpointStatus(unsigned char EndPoint)
86 {
87 1 unsigned char BackValue;
88 1 PDIUSB_CS=0;
89 1 if(EventFlags.Bits.InISR == 0)
90 1 EA = 0;
91 1
92 1 Outportb(D12_COMMAND, 0x80 + EndPoint);//读取端点状态
93 1 BackValue = Inportb(D12_DATA);
94 1
95 1 if(EventFlags.Bits.InISR == 0)
96 1 EA = 1;
97 1
98 1 PDIUSB_CS=1;
99 1 return BackValue;
100 1 }
101 //读端点最后处理状态
102 unsigned char D12_ReadLastTransactionStatus(unsigned char bEndp)
103 {
104 1 unsigned char i;
105 1 PDIUSB_CS=0;
106 1 Outportb(D12_COMMAND,0x40+bEndp);
107 1 i=Inportb(D12_DATA);
108 1 PDIUSB_CS=1;
109 1 return i;
110 1 }
111 //读端口
112 unsigned char D12_ReadEndpoint(unsigned char endp,unsigned char len,unsigned char *buf)
113 {
114 1 unsigned char i,j;
115 1 PDIUSB_CS=0;
C51 COMPILER V8.02 PDIUSB 08/31/2007 18:23:38 PAGE 3
116 1 Outportb(D12_COMMAND,endp);
117 1 if((Inportb(D12_DATA)&0xff)==0)//" define D12_FULLEMPTY as 0xFF by newer
118 1 return 0;
119 1 Outportb(D12_COMMAND,0x80+endp);
120 1 i=Inportb(D12_DATA);
121 1 i=i&0x60;
122 1
123 1
124 1 Outportb(D12_COMMAND,0xF0);
125 1 j=Inportb(D12_DATA);
126 1 j=Inportb(D12_DATA);
127 1 if(j>len)
128 1 j=len;
129 1 for(i=0;i<j;i++)
130 1 *(buf+i)=Inportb(D12_DATA);
131 1 Outportb(D12_COMMAND,0xF2);
132 1
133 1 PDIUSB_CS=1;
134 1 return j;
135 1 }
136
137 unsigned char D12_ReadEndpoint_Int(unsigned char endp,unsigned char len,unsigned char *buf)
138 {
139 1 unsigned char i,j;
140 1 PDIUSB_CS=0;
141 1 Outportb(D12_COMMAND,endp);
142 1 if((Inportb(D12_DATA)&0xff)==0)//" define D12_FULLEMPTY as 0xFF by newer
143 1 return 0;
144 1 Outportb(D12_COMMAND,0x80+endp);
145 1 i=Inportb(D12_DATA);
146 1 i=i&0x60;
147 1
148 1
149 1 Outportb(D12_COMMAND,0xF0);
150 1 j=Inportb(D12_DATA);
151 1 j=Inportb(D12_DATA);
152 1 if(j>len)
153 1 j=len;
154 1 for(i=0;i<j;i++)
155 1 *(buf+i)=Inportb(D12_DATA);
156 1 Outportb(D12_COMMAND,0xF2);
157 1 PDIUSB_CS=1;
158 1 return j;
159 1 }
160
161 unsigned char D12_WriteEndpoint(unsigned char endp,unsigned char len,unsigned char * buf)
162 {
163 1 unsigned char i;
164 1 PDIUSB_CS=0;
165 1 Outportb(D12_COMMAND,endp);
166 1 Inportb(D12_DATA);
167 1 Outportb(D12_COMMAND,0xF0);
168 1 Outportb(D12_DATA,0);
169 1 Outportb(D12_DATA,len);
170 1 for(i=0;i<len;i++)
171 1 Outportb(D12_DATA,*(buf+i));
172 1 Outportb(D12_COMMAND,0xFA);
173 1 PDIUSB_CS=1;
174 1 return len;
175 1 }
176
177 unsigned char D12_WriteEndpoint_Int(unsigned char endp,unsigned char len,unsigned char * buf)
C51 COMPILER V8.02 PDIUSB 08/31/2007 18:23:38 PAGE 4
178 {
179 1 unsigned char i;
180 1 PDIUSB_CS=0;
181 1 Outportb(D12_COMMAND,endp);
182 1 Inportb(D12_DATA);
183 1 Outportb(D12_COMMAND,0xF0);
184 1 Outportb(D12_DATA,0);
185 1 Outportb(D12_DATA,len);
186 1 for(i=0;i<len;i++)
187 1 Outportb(D12_DATA,*(buf+i));
188 1 Outportb(D12_COMMAND,0xFA);
189 1 PDIUSB_CS=1;
190 1 return len;
191 1 }
192
193 void DisconnectUSB(void)
194 {
195 1 D12_SetMode(0x02,0x43);//SET TO ONE? by newer
196 1 }
197
198 void InitialUSBInt(void);
199 void ConnectUSB(void)
200 {
201 1 EventFlags.Value = 0x0000;
202 1 D12_SetMode(0x16,0x43);
203 1 Delay1ms(100);
204 1 InitialUSBInt();
205 1 }
206
207 void ReconnectUSB(void)
208 {
209 1 SUSPEND = 0;
210 1 DisconnectUSB();
211 1 Delay1ms(1000);
212 1 ConnectUSB();
213 1 }
214
215 void InitialUSBInt(void)
216 {
217 1 IT0=0; //低电平中断触发
218 1 EX0=1; //允许外部中断
219 1 PX0=0; //优先级低
220 1 EA =1;
221 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 972 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 93 37
PDATA SIZE = ---- ----
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 + -