📄 chap_9.lst
字号:
C51 COMPILER V7.06 CHAP_9 02/17/2004 14:42:21 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE CHAP_9
OBJECT MODULE PLACED IN Chap_9.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE Chap_9.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*
2 //*************************************************************************
3 //
4 // P H I L I P S P R O P R I E T A R Y
5 //
6 // COPYRIGHT (c) 1999 BY PHILIPS SINGAPORE.
7 // -- ALL RIGHTS RESERVED --
8 //
9 // File Name: CHAP_9.C
10 // Author: Hilbert Zhang ZhenYu
11 // Created: Oct. 1 99
12 // Modified:
13 // Revision: 0.0.
14 //
15 //*************************************************************************
16 */
17
18 #include <reg51.h> /* special function register declarations */
19
20 #undef GLOBAL_EXT
21
22 #include "SysCnfg.h"
23 #include "BasicTyp.H"
24
25 #include "usb100.h"
26
27 #include "Common.h"
28 #include "Hal4Sys.h"
29 #include "Hal4d12.h"
30 #include "mainloop.h"
31 #include "chap_9.h"
32
33 /*
34 //*************************************************************************
35 // Public Data
36 //*************************************************************************
37 */
38
39 // bit Flags
40 STRUC_EXT BITFLAGS BDATA_SEG bFlags;
41
42 // MCU Timer bit flags
43 BIT_EXT MCUBF_Timer;
44 INT8_EXT Hal4Sys_ClockTicks;
45
46 // D12 bit flags
47 BIT_EXT D12BF_SetupOverwritten;
48 BIT_EXT D12BF_Configuration;
49
50 //USB
51 // DefaultControlPipe Finite State Machine [One-Hot]
52 INT8_EXT BDATA_SEG DCPFSMstate;
53 BIT_EXT DCPFSM_SetupProc;
54 BIT_EXT DCPFSM_DataIn;
55 BIT_EXT DCPFSM_DataOut;
C51 COMPILER V7.06 CHAP_9 02/17/2004 14:42:21 PAGE 2
56 BIT_EXT DCPFSM_COhandshake;
57 BIT_EXT DCPFSM_CIhandshake;
58 BIT_EXT DCPFSM_Stall;
59 // DCP FSM
60 // SETUP Stage -> SETUP Proc -> DATA OUT Stage -> CONTROL OUT Handshake -> STATUS Stage -> IDLE
61 // SETUP Stage -> SETUP Proc -> CONTROL OUT Handshake -> STATUS Stage -> IDLE
62 // SETUP Stage -> SETUP Proc -> DATA IN Stage-> CONTROL IN Handshake ->STATUS Stage -> IDLE
63 //
64
65
66 // USB Device Request
67 STRUC_EXT DEVICE_REQUEST DCPDeviceRequest;
68 INT8_EXT UsbReq_Recipient;
69 INT8_EXT UsbReq_Type;
70 INT8_EXT UsbReq_Request;
71 BIT_EXT REQBF_DCPRequest_dir;
72 BIT_EXT REQBF_StallDCPRequest;
73 BIT_EXT REQBF_DCPRequest_EPdir;
74
75
76 // Default Control Pipe Tansfer DCPXfer
77 INT8_EXT BDATA_SEG Xfer_Space;
78 BIT_EXT DCPXfer_atMCUCODE;
79 BIT_EXT DCPXfer_atMCURAM;
80 BIT_EXT DCPXfer_atEEROM;
81 BIT_EXT DCPXfer_atATA;
82
83 INT16_EXT DCPXfer_wResidue;
84 INT8_EXT * DCPXfer_pData;
85
86 // Bulk-Only TP Finite State Machine [One-Hot]
87 INT8_EXT BDATA_SEG BOTFSMstate;
88 BIT_EXT BOTFSM_CBWProc;
89 BIT_EXT BOTFSM_DataIn;
90 BIT_EXT BOTFSM_DataOut;
91 BIT_EXT BOTFSM_CSWProc;
92 BIT_EXT BOTFSM_CSW;
93 BIT_EXT BOTFSM_IDLE;
94 BIT_EXT BOTFSM_Stall;
95 // BOT FSM
96 // IDLE Stage -> CBW -> CBW Proc -> DATA OUT Stage -> CSW Proc -> CSW Stage -> IDLE
97 // IDLE Stage -> CBW -> CBW Proc -> DATA IN Stage -> CSW Proc -> CSW Stage -> IDLE
98 // STALL Stage -> IDLE
99 //
100 BIT_EXT BOTBF_StallAtBulkOut;
101 BIT_EXT BOTBF_StallAtBulkIn;
102
103 BIT_EXT BOTXfer_atRAM;
104 BIT_EXT BOTXfer_atATA;
105 BIT_EXT BOTXfer_atROM;
106
107
108 /*
109 //*************************************************************************
110 // Public temp var
111 //*************************************************************************
112 */
113
114 // Public temp var
115 STRUC_EXT FLEXI_INT32 tempvars4UsbReq;
116 INT8_EXT BDATA_SEG FlexByte;
117 BIT_EXT FlexByte_b0 ;
C51 COMPILER V7.06 CHAP_9 02/17/2004 14:42:21 PAGE 3
118 BIT_EXT FlexByte_b1;
119 BIT_EXT FlexByte_b2;
120 BIT_EXT FlexByte_b3;
121 BIT_EXT FlexByte_b4;
122 BIT_EXT FlexByte_b5;
123 BIT_EXT FlexByte_b6;
124 BIT_EXT FlexByte_b7;
125
126
127 /*
128 //*************************************************************************
129 // Private temp var
130 //*************************************************************************
131 */
132
133 /*
134 //*************************************************************************
135 // USB Device Descriptor
136 //*************************************************************************
137 */
138 //设备描述符
139 code USB_DEVICE_DESCRIPTOR DeviceDescr =
140 {
141 sizeof(USB_DEVICE_DESCRIPTOR), // 设备描述符长度
142 USB_DEVICE_DESCRIPTOR_TYPE, // 设备描述符类型=01
143 SWAP(0x0100), // 协议版本
144 0, // 测试设备类型
145 0, // 设备子类
146 0, // 设备协议
147 EP0_PACKET_SIZE, // 端点0最大数据包大小,=10H
148
149 SWAP(0x0693),
150 SWAP(0x0003),
151
152 SWAP(0x0100), // 设备系列号
153 STR_INDEX_MANUFACTURER, // 厂商描述符字符串索引,=01H
154 STR_INDEX_PRODUCT, // 产品描述符字符串索引,=02H
155 STR_INDEX_SERIALNUMBER, // 设序列号字符串索引,=03H
156 1 // 可能备置数
157 };
158
159 #define NUM_ENDPOINTS 2 //定义除主控端点外的端点数
160
161 #define CONFIG_DESCRIPTOR_LENGTH (sizeof(USB_CONFIGURATION_DESCRIPTOR) + sizeof(USB_INTERFACE_DESCRIPTO
-R) + (NUM_ENDPOINTS * sizeof(USB_ENDPOINT_DESCRIPTOR)))
162
163 //设备配置描述符
164 code USB_CONFIGURATION_DESCRIPTOR ConfigDescr =
165 {
166 sizeof(USB_CONFIGURATION_DESCRIPTOR),
167 USB_CONFIGURATION_DESCRIPTOR_TYPE, // 类型,=02H
168 SWAP(CONFIG_DESCRIPTOR_LENGTH), // 返回整个数据长度。包括该配置所返回的所有描述符(配置、接口
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -