📄 bulk_test.lst
字号:
C51 COMPILER V6.10 BULK_TEST 01/20/2009 06:12:59 PAGE 1
C51 COMPILER V6.10, COMPILATION OF MODULE BULK_TEST
OBJECT MODULE PLACED IN .\bulk_test.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\bulk_test.c OPTIMIZE(6,SPEED) DEB
-UG OBJECTEXTEND CODE SYMBOLS PAGEWIDTH(80)
stmt level source
1 #pragma NOIV // Do not generate interrupt vecto
-rs
2 //----------------------------------------------------------------
--------------
3 // File: portcstb.c
4 // Contents: Hooks required to implement USB peripheral functio
-n.
5 // Code written for FX2 100-pin REVD...
6 // This firmware is used to demonstrate the PORTC STR
-OBE FEATURE
7 // Copyright (c) 2001 Cypress Semiconductor All rights reserved
8 //----------------------------------------------------------------
--------------
9 #include "fx2.h"
10 #include "fx2regs.h"
11 #include "fx2sdly.h" // SYNCDELAY macro
12
13 extern BOOL GotSUD; // Received setup data flag
14 extern BOOL Sleep;
15 extern BOOL Rwuen;
16 extern BOOL Selfpwr;
17
18
19 BYTE Read(BYTE add);//读数据
20
21 BYTE Configuration; // Current configuration
22 BYTE AlternateSetting; // Alternate settings
23
24 // EZUSB FX2 PORTA i/o...
25 //sbit LATRIGWR = IOA ^ 0; // alt. func., INT0#
26 //sbit LATRIGRD = IOA ^ 1; // alt. func., INT1#
27 sbit NPD = IOA ^ 2;//PA2
28 sbit RST = IOA ^ 3;//PA3
29 sbit NCS = IOA ^ 4;//PA4
30 sbit MISO = IOA ^ 5;//PA5
31 sbit SCLK = IOA ^ 6;//PA6
32 sbit MOSI = IOA ^ 7;//PA7
33 sbit LEN = IOB ^ 7;//PB7
34 // EZUSB FX2 PORTE is not bit-addressable...
35
36 // use this global variable when (de)asserting debug LEDs...
37
38 //----------------------------------------------------------------
--------------
39 // Task Dispatcher hooks
40 // The following hooks are called by the task dispatcher.
41 //----------------------------------------------------------------
--------------
42
43 void TD_Init( void )
44 { // Called once at startup
45 1 CPUCS = 0x10 ;
46 1 IFCONFIG = 0xC0;
47 1 EP1OUTCFG = 0xB0;
C51 COMPILER V6.10 BULK_TEST 01/20/2009 06:12:59 PAGE 2
48 1 EP1INCFG = 0xB0;
49 1 SYNCDELAY;
50 1
51 1 OEA = 0xFC; //使能读写允许的引脚PA2、PA3、PA4、PA5、PA6、PA7、
52 1 OEB = 0x80; //PB7
53 1
54 1 Rwuen = TRUE; // Enable remote-wakeup
55 1 }
56
57 void TD_Poll( void )
58 { // Called repeatedly while the device is idle
59 1
60 1 if( !( EP1OUTCS & 0x02 ) && EP1OUTBC )//BUSY=0,OUT的缓冲区数据有
-效;若
61 1 {
62 2 if(EP1OUTBUF[0]==0x11 && EP1OUTBUF[1]==0x22)
63 2 {
64 3 LEN=1;
65 3 EZUSB_Delay(50);
66 3 LEN=0;
67 3 EZUSB_Delay(50);
68 3
69 3 NPD = 0;//NPD->0 ->1供电
70 3 NPD=1;
71 3
72 3 RST=1;//Reset->0 ->1复位
73 3 EZUSB_Delay1ms();//Delay(>=10us);
74 3 RST=0;
75 3
76 3 SCLK=1;//时钟闲置时上拉
77 3
78 3 NCS=1;//NCS->1 ->0芯片选择
79 3 NCS=0;
80 3
81 3 EP1INBUF[0]=Read(0x1f);
82 3 EZUSB_Delay1ms();
83 3 EP1INBUF[1]=Read(0x00);//PID 0x17
84 3 EZUSB_Delay1ms();
85 3 EP1INBUF[2]=Read(0x01);
86 3 EZUSB_Delay1ms();
87 3 EP1INBUF[3]=Read(0x02);
88 3 EZUSB_Delay1ms();
89 3 EP1INBUF[4]=Read(0x03);
90 3 EZUSB_Delay1ms();
91 3 EP1INBUF[5]=Read(0x04);
92 3 EZUSB_Delay1ms();
93 3 EP1INBUF[6]=Read(0x0a);
94 3 EZUSB_Delay1ms();
95 3 EP1INBUF[7]=Read(0x0e);
96 3 EZUSB_Delay1ms();
97 3 EP1INBUF[8]=Read(0x10);
98 3 EZUSB_Delay1ms();
99 3 EP1INBUF[9]=Read(0x11);
100 3 EZUSB_Delay1ms();
101 3 EP1INBUF[10]=Read(0x3f);
102 3 EZUSB_Delay1ms();
103 3 EP1INBUF[11]=Read(0x60);
104 3 EZUSB_Delay1ms();
105 3 EP1INBUF[12]=Read(0x3D);
106 3 EZUSB_Delay1ms();
107 3 EP1INBUF[13]=(BYTE)MISO;
108 3 EZUSB_Delay1ms();
C51 COMPILER V6.10 BULK_TEST 01/20/2009 06:12:59 PAGE 3
109 3 EP1INBC=20;// 设置端点为IN传输,BUSY位自动置1
110 3 }
111 2 if(EP1OUTBUF[0]==0x11 && EP1OUTBUF[1]==0x33)
112 2 {
113 3 NCS=1;//A3080停止工作
114 3 }
115 2 if(EP1OUTBUF[0]==0x22 && EP1OUTBUF[1]==0x33)
116 2 {
117 3 LEN=1;
118 3 EZUSB_Delay(50);
119 3 LEN=0;
120 3 EZUSB_Delay(50);
121 3 EP1INBUF[0]=0x11;
122 3 EP1INBC=20;// 设置端点为IN传输,BUSY位自动置1
123 3 }
124 2
125 2 EP1OUTBC = 0x00;
126 2 }
127 1
128 1
129 1 }
130
131 BYTE Read(BYTE add)
132 {
133 1 char a_add[9];
134 1 BYTE data0;
135 1 BYTE temp_data0;
136 1 char i;
137 1 //1、写地址
138 1 a_add[0]=0;//读数据标志位
139 1 a_add[1]=(add & 0x40)>>6;
140 1 a_add[2]=(add & 0x20)>>5;
141 1 a_add[3]=(add & 0x10)>>4;
142 1 a_add[4]=(add & 0x08)>>3;
143 1 a_add[5]=(add & 0x04)>>2;
144 1 a_add[6]=(add & 0x02)>>1;
145 1 a_add[7]=add & 0x01;
146 1 for(i=0;i<8;i++)//写地址
147 1 {
148 2 SCLK=0;
149 2 EZUSB_Delay1ms();
150 2 MOSI=a_add[i];
151 2 EZUSB_Delay1ms();
152 2 SCLK=1;
153 2 EZUSB_Delay1ms();
154 2 }
155 1 EZUSB_Delay1ms();//Tread>=50us
156 1 SCLK=0;
157 1 SCLK=1;
158 1 for(i=0;i<8;i++)//读数据
159 1 {
160 2 SCLK=1;
161 2 EZUSB_Delay1ms();
162 2 //data0 += (BYTE)MISO<<(7-i);
163 2 temp_data0 = MISO;
164 2 data0 +=temp_data0<<(7-i);
165 2 EZUSB_Delay1ms();
166 2 SCLK=0;
167 2 EZUSB_Delay1ms();
168 2 SCLK=1;
169 2 }
170 1
C51 COMPILER V6.10 BULK_TEST 01/20/2009 06:12:59 PAGE 4
171 1 LEN=1;
172 1 EZUSB_Delay(50);
173 1 LEN=0;
174 1 EZUSB_Delay(50);
175 1
176 1 return data0;
177 1 }
178
179
180 BOOL TD_Suspend(void) // Called before the device goes in
-to suspend mode
181 {
182 1 return(TRUE);
183 1 }
184
185 BOOL TD_Resume(void) // Called after the device resumes
186 {
187 1 return(TRUE);
188 1 }
189
190 //----------------------------------------------------------------
--------------
191 // Device Request hooks
192 // The following hooks are called by the end point 0 device requ
-est parser.
193 //----------------------------------------------------------------
--------------
194
195 BOOL DR_GetDescriptor(void)
196 {
197 1 return(TRUE);
198 1 }
199
200 BOOL DR_SetConfiguration(void) // Called when a Set Configuratio
-n command is received
201 {
202 1 Configuration = SETUPDAT[2];
203 1 return(TRUE); // Handled by user code
204 1 }
205
206 BOOL DR_GetConfiguration(void) // Called when a Get Configuratio
-n command is received
207 {
208 1 EP0BUF[0] = Configuration;
209 1 EP0BCH = 0;
210 1 EP0BCL = 1;
211 1 return(TRUE); // Handled by user code
212 1 }
213
214 BOOL DR_SetInterface(void) // Called when a Set Interface co
-mmand is received
215 {
216 1 AlternateSetting = SETUPDAT[2];
217 1 return(TRUE); // Handled by user code
218 1 }
219
220 BOOL DR_GetInterface(void) // Called when a Set Interface co
-mmand is received
221 {
222 1 EP0BUF[0] = AlternateSetting;
223 1 EP0BCH = 0;
224 1 EP0BCL = 1;
C51 COMPILER V6.10 BULK_TEST 01/20/2009 06:12:59 PAGE 5
225 1 return(TRUE); // Handled by user code
226 1 }
227
228 BOOL DR_GetStatus(void)
229 {
230 1 return(TRUE);
231 1 }
232
233 BOOL DR_ClearFeature(void)
234 {
235 1 return(TRUE);
236 1 }
237
238 BOOL DR_SetFeature(void)
239 {
240 1 return(TRUE);
241 1 }
242
243
244
245 BOOL DR_VendorCmnd( void )
246 {
247 1 return(TRUE);
248 1 }
249
250 //----------------------------------------------------------------
--------------
251 // USB Interrupt Handlers
252 // The following functions are called by the USB interrupt jump
-table.
253 //----------------------------------------------------------------
--------------
254
255 // Setup Data Available Interrupt Handler
256 void ISR_Sudav(void) interrupt 0
257 {
258 1 GotSUD = TRUE; // Set flag
259 1 EZUSB_IRQ_CLEAR();
260 1 USBIRQ = bmSUDAV; // Clear SUDAV IRQ
261 1 }
262
263 // Setup Token Interrupt Handler
264 void ISR_Sutok(void) interrupt 0
265 {
266 1 EZUSB_IRQ_CLEAR();
267 1 USBIRQ = bmSUTOK; // Clear SUTOK IRQ
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -