📄 cydown.lst
字号:
C51 COMPILER V7.02a CYDOWN 07/31/2007 11:33:27 PAGE 1
C51 COMPILER V7.02a, COMPILATION OF MODULE CYDOWN
OBJECT MODULE PLACED IN CyDown.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CyDown.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //-----------------------------------------------------------------------------
2 // File: CyDown.c
3 //-----------------------------------------------------------------------------
4 #include "lp.h"
5 #include "lpregs.h"
6 #include "syncdly.h" // 同步延时宏
7
8 //-----------------------------------------------------------------------------
9 // Constants
10 //-----------------------------------------------------------------------------
11 #define DELAY_COUNT 0x9248*8L // 延时计数
12 #define _IFREQ 48000
13 #define _CFREQ 48000
14
15 //-----------------------------------------------------------------------------
16 // 比较函数
17 //-----------------------------------------------------------------------------
18 #define min(a,b) (((a)<(b))?(a):(b))
19 #define max(a,b) (((a)>(b))?(a):(b))
20
21 //-----------------------------------------------------------------------------
22 // 全局变量
23 //-----------------------------------------------------------------------------
24 volatile BOOL GotSUD;
25 BOOL Rwuen;
26 BOOL Selfpwr;
27 volatile BOOL Sleep; // 休眠模式使能信号
28
29 WORD pDeviceDscr;
30 WORD pDeviceQualDscr;
31 WORD pHighSpeedConfigDscr;
32 WORD pFullSpeedConfigDscr;
33 WORD pConfigDscr;
34 WORD pOtherConfigDscr;
35 WORD pStringDscr;
36
37 //-----------------------------------------------------------------------------
38 // 函数声明
39 //-----------------------------------------------------------------------------
40 void SetupCommand(void);
41 void TD_Init(void);
42 void TD_Poll(void);
43 BOOL TD_Suspend(void);
44 BOOL TD_Resume(void);
45
46 BOOL DR_GetDescriptor(void);
47 BOOL DR_SetConfiguration(void);
48 BOOL DR_GetConfiguration(void);
49 BOOL DR_SetInterface(void);
50 BOOL DR_GetInterface(void);
51 BOOL DR_GetStatus(void);
52 BOOL DR_ClearFeature(void);
53 BOOL DR_SetFeature(void);
54 BOOL DR_VendorCmnd(void);
55 BOOL DR_LED1(void); //显示数字0
C51 COMPILER V7.02a CYDOWN 07/31/2007 11:33:27 PAGE 2
56 BOOL DR_LED2(void); //显示数字1
57 BOOL DR_LED3(void); //显示数字2
58 BOOL DR_LED4(void); //显示字符A
59 BOOL DR_LED5(void); //显示数字F
60
61 // 端点映射
62 const char code EPCS_Offset_Lookup_Table[] =
63 {
64 0, // EP1OUT
65 1, // EP1IN
66 2, // EP2OUT
67 2, // EP2IN
68 3, // EP4OUT
69 3, // EP4IN
70 4, // EP6OUT
71 4, // EP6IN
72 5, // EP8OUT
73 5, // EP8IN
74 };
75
76 #define epcs(EP) (EPCS_Offset_Lookup_Table[(EP & 0x7E) | (EP > 128)] + 0xE6A1)
77
78 //-----------------------------------------------------------------------------
79 // 主程序
80 //-----------------------------------------------------------------------------
81
82 //任务线程
83 void main(void)
84 {
85 1 DWORD i;
86 1 WORD offset;
87 1 DWORD DevDescrLen;
88 1 DWORD j=0;
89 1 WORD IntDescrAddr;
90 1 WORD ExtDescrAddr;
91 1
92 1 // 初始化
93 1 Sleep = FALSE; // 禁止休眠模式
94 1 Rwuen = FALSE; // 禁止远程唤醒
95 1 Selfpwr = FALSE; // 禁止自供电
96 1 GotSUD = FALSE;
97 1
98 1 // 初始化用户设备
99 1 TD_Init();
100 1
101 1 //定向USB描述符
102 1 pDeviceDscr = (WORD)&DeviceDscr;
103 1 pDeviceQualDscr = (WORD)&DeviceQualDscr;
104 1 pHighSpeedConfigDscr = (WORD)&HighSpeedConfigDscr;
105 1 pFullSpeedConfigDscr = (WORD)&FullSpeedConfigDscr;
106 1 pStringDscr = (WORD)&StringDscr;
107 1
108 1 if ((WORD)&DeviceDscr & 0xC000)
109 1 {
110 2 // 重定向描述符
111 2 IntDescrAddr = INTERNAL_DSCR_ADDR;
112 2 ExtDescrAddr = (WORD)&DeviceDscr;
113 2 DevDescrLen = (WORD)&UserDscr - (WORD)&DeviceDscr + 2;
114 2 for (i = 0; i < DevDescrLen; i++)
115 2 *((BYTE xdata *)IntDescrAddr+i) = *((BYTE xdata *)ExtDescrAddr+i);
116 2
117 2 // 更新描述符指针
C51 COMPILER V7.02a CYDOWN 07/31/2007 11:33:27 PAGE 3
118 2 pDeviceDscr = IntDescrAddr;
119 2 offset = (WORD)&DeviceDscr - INTERNAL_DSCR_ADDR;
120 2 pDeviceQualDscr -= offset;
121 2 pConfigDscr -= offset;
122 2 pOtherConfigDscr -= offset;
123 2 pHighSpeedConfigDscr -= offset;
124 2 pFullSpeedConfigDscr -= offset;
125 2 pStringDscr -= offset;
126 2 }
127 1
128 1 EZUSB_IRQ_ENABLE(); // 使能USB中断
129 1 EZUSB_ENABLE_RSMIRQ(); //远程唤醒中断
130 1
131 1 INTSETUP |= (bmAV2EN | bmAV4EN); // 使能INT 2 & 4 自动向量
132 1
133 1 USBIE |= bmSUDAV | bmSUTOK | bmSUSP | bmURES | bmHSGRANT; // 使能选择的中断
134 1 EA = 1; // 使能8051全局中断
135 1
136 1 #ifndef NO_RENUM
137 1 // 检查重列举
138 1 if(!(USBCS & bmRENUM))
139 1 {
140 2 EZUSB_Discon(TRUE); //重列举
141 2 }
142 1 #endif
143 1
144 1 // 连接
145 1 USBCS &=~bmDISCON;
146 1
147 1 CKCON = (CKCON&(~bmSTRETCH)) | FW_STRETCH_VALUE;
148 1
149 1 //清Sleep标记
150 1 Sleep = FALSE;
151 1
152 1 //任务线程
153 1 while(TRUE) //主循环
154 1 {
155 2 //列举用户设备
156 2 TD_Poll();
157 2
158 2 if(GotSUD)
159 2 {
160 3 SetupCommand();
161 3 GotSUD = FALSE; // 清SETUP标记
162 3 }
163 2
164 2 //检查并处理
165 2 if (Sleep)
166 2 {
167 3 if(TD_Suspend())
168 3 {
169 4 Sleep = FALSE; //清Sleep标记
170 4 do
171 4 {
172 5 EZUSB_Susp(); //空闲状态处理
173 5 }
174 4 while(!Rwuen && EZUSB_EXTWAKEUP());
175 4 EZUSB_Resume();
176 4 TD_Resume();
177 4 }
178 3 }
179 2
C51 COMPILER V7.02a CYDOWN 07/31/2007 11:33:27 PAGE 4
180 2 }
181 1 }
182
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -