📄 d12impl.lst
字号:
C51 COMPILER V7.01 D12IMPL 06/30/2007 11:42:51 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE D12IMPL
OBJECT MODULE PLACED IN D12Impl.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE D12Impl.C LARGE BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*-----------------------------------------------------------------------
2
3 Copyright (C) 2006 Beijing Jiaotong University, Computer Science
4
5 Creator: xiaoqiang
6
7 File: D12Impl.C
8
9 Description:
10 send & receive PDIUSBD12 chip data & command
11
12 History:
13 2006-7-24 xiaoqiang created
14
15 ------------------------------------------------------------------------*/
16 #include <typedef.h>
17 #include <c8051f120.h>
18 #include <usb.h>
19 #include <d12interface.h>
20
21 u8 Ep1Buf[EP1_PACKET_SIZE]; //ep1 buff
22 u8 xdata Ep2Buf[EP2_PACKET_SIZE*2];
23 //u8 xdata Ep2Buf2[EP2_PACKET_SIZE];
24 extern bool Ep2SendBufferFul; //ep2 send buffer has data to send
25
26
27 //send command & data
28 #define D12_COMMAND 1 //write command to d12
29 #define D12_DATA 0 //write data to d12
30
31 //command & data port
32 #define D12_COMMAND_PORT P6 //d12 command port link to p6
33 #define D12_DATA_PORT P6 //d12 data port link to p6
34
35
36
37 /* write cmd or data to d12 */
38 void D12_WritePort(u8 bMode, u8 bCmd)
39 {
40 1 // u8 delay= 0;
41 1 u8 page = SFRPAGE;
42 1 SFRPAGE = 0XF;
43 1
44 1 D12_CS = D12_CS_ENABLE;
45 1
46 1 //WRITE command mode
47 1 D12_A0 = bMode;
48 1
49 1 //SET D12 TO WRITE MODE
50 1 D12_WR = D12_WR_ENABLE;
51 1
52 1 //PORT SET TO WRITE MODE, AND WRITE CMD
53 1 P6MDOUT = 0xff;
54 1 D12_COMMAND_PORT = bCmd;
55 1
C51 COMPILER V7.01 D12IMPL 06/30/2007 11:42:51 PAGE 2
56 1 D12_WR = D12_WR_DISABLE;
57 1 D12_CS = D12_CS_DISABLE;
58 1
59 1 SFRPAGE = page;
60 1 }
61
62 /* get data from d12 */
63 u8 D12_ReadPort()
64 {
65 1 u8 ret;
66 1 u8 page = SFRPAGE;
67 1 SFRPAGE = 0XF;
68 1
69 1 D12_CS = D12_CS_ENABLE;
70 1
71 1
72 1 //SET D12 TO WRITE MODE
73 1 D12_RD = D12_RD_ENABLE;
74 1
75 1 D12_A0 = D12_DATA;
76 1
77 1 //PORT SET TO READ MODE, AND READ DATA
78 1 P6MDOUT = 0x0;
79 1 D12_DATA_PORT = 0xff;
80 1 ret = D12_DATA_PORT;
81 1
82 1
83 1 D12_RD = D12_RD_DISABLE;
84 1 D12_CS = D12_CS_DISABLE;
85 1
86 1 SFRPAGE = page;
87 1 return ret;
88 1 }
89
90 /* init d12 work mode */
91 void Init_D12()
92 {
93 1 u8 page = SFRPAGE;
94 1 SFRPAGE = 0XF;
95 1
96 1 //set d12_a0(p5.4), d12_wr(p5.5), d12_rd(p5.6), d12_cs(p5.7)
97 1 //to out mode
98 1 P5MDOUT |= 0xf0;
99 1
100 1 //ENABLE cs signal
101 1 D12_CS = D12_CS_ENABLE;
102 1 D12_WR = D12_WR_DISABLE;
103 1 D12_RD = D12_RD_DISABLE;
104 1
105 1 //DISABLE WR & RD SIGNAL
106 1 //SET D12_SUSP(P3.3) TO OUT MODE
107 1 P3MDOUT |= 0X08;
108 1 //WAKEUP D12
109 1 D12_SUSP = D12_SUSP_WAKEUP;
110 1
111 1 D12_CS = D12_CS_DISABLE;
112 1
113 1 SFRPAGE = page;
114 1 }
115
116 /*
117 void D12_SoftConnect(u8 bConfigure)
C51 COMPILER V7.01 D12IMPL 06/30/2007 11:42:51 PAGE 3
118 {
119 if(bEppflags.flags.in_isr == 0)
120 DISABLE_INTERRUPT;
121
122 D12_WritePort(D12_COMMAND, 0xF3);
123 D12_WritePort(D12_DATA, bConfigure); //配置字节信息
124 if(bEppflags.flags.in_isr == 0)
125 ENABLE_INTERRUPT;
126 }
127
128 void USBCHIP_SetDMA(u8 bMode) //设置DMA
129 {
130 if(bEppflags.flags.in_isr == 0)
131 DISABLE_INTERRUPT;
132
133 D12_WritePort(D12_COMMAND, 0xFB);
134 D12_WritePort(D12_DATA, bMode);
135
136 if(bEppflags.flags.in_isr == 0)
137 ENABLE_INTERRUPT;
138 }
139 */
140
141 void D12_Disconnect(void)
142 {
143 1 D12_SetMode(D12_NOLAZYCLOCK | D12_CLOCKRUNNING,
144 1 D12_SETTOONE | D12_CLOCK_24M);
145 1 }
146
147 void D12_Connect(void)
148 {
149 1 if(bEppflags.flags.in_isr == 0)
150 1 DISABLE_INTERRUPT;
151 1
152 1 D12_SetMode(D12_NOLAZYCLOCK | D12_CLOCKRUNNING|D12_SOFTCONNECT,
153 1 D12_SETTOONE | D12_CLOCK_24M);
154 1
155 1 if(bEppflags.flags.in_isr == 0)
156 1 ENABLE_INTERRUPT;
157 1
158 1 }
159
160
161 /*
162 void D12_Reconnect(void)
163 {
164 u8 clk_cnt;
165 D12_SUSP = 0; //唤醒D12
166 bEppflags.flags.in_isr = 1;
167
168 // USB_ClearAllInts();
169 D12_Disconnect();
170
171 for(clk_cnt=0;clk_cnt<2000;clk_cnt++);
172
173 D12_Connect();
174 bEppflags.flags.in_isr = 0;
175
176 }
177 */
178
179 void D12_SetAddressEnable(u8 bAddress, bool bEnable)
C51 COMPILER V7.01 D12IMPL 06/30/2007 11:42:51 PAGE 4
180 {
181 1 if(bEppflags.flags.in_isr == 0)
182 1 DISABLE_INTERRUPT;
183 1 D12_WritePort(D12_COMMAND, D12CMD_EN_ADDRESS);
184 1 if(bEnable)
185 1 bAddress |= 0x80;
186 1 D12_WritePort(D12_DATA, bAddress);
187 1 if(bEppflags.flags.in_isr == 0)
188 1 ENABLE_INTERRUPT;
189 1 }
190
191 void D12_SetEndpointEnable(bool bEnable)
192 {
193 1 if(bEppflags.flags.in_isr == 0)
194 1 DISABLE_INTERRUPT;
195 1 D12_WritePort(D12_COMMAND, D12CMD_EN_EP);
196 1 if(bEnable)
197 1 D12_WritePort(D12_DATA, 1);
198 1 else
199 1 D12_WritePort(D12_DATA, 0);
200 1 if(bEppflags.flags.in_isr == 0)
201 1 ENABLE_INTERRUPT;
202 1 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -