📄 gpif.lst
字号:
133 // AddrMode Same Val Same Val Same Val Same Val Same Val Same Val Same Val
134 // DataMode Activate NO Data NO Data NO Data NO Data NO Data NO Data
135 // NextData SameData SameData SameData SameData SameData SameData SameData
136 // Int Trig No Int No Int No Int No Int No Int No Int No Int
137 // IF/Wait IF Wait 1 Wait 1 Wait 1 Wait 1 Wait 1 Wait 1
138 // Term A IntReady
139 // LFunc XOR
140 // Term B IntReady
141 // Branch1 ThenIdle
142 // Branch0 ElseIdle
143 // Re-Exec No
144 // Sngl/CRC Default Default Default Default Default Default Default
145 // FLAG A 1 0 0 0 0 0 0 0
146 // FLAG B 0 0 0 0 0 0 0 0
147 // FLAG C 0 0 0 0 0 0 0 0
148 // CTL 3 0 0 0 0 0 0 0 0
149 // CTL 4 1 1 1 1 1 1 1 1
150 // CTL 5 1 1 1 1 1 1 1 1
151 //
152 // END DO NOT EDIT
153
154 // GPIF Program Code
155
156 // DO NOT EDIT ...
157 #include "fx2.h"
158 #include "fx2regs.h"
159 #include "fx2sdly.h" // SYNCDELAY macro
160 // END DO NOT EDIT
161
162 // DO NOT EDIT ...
163 const char xdata WaveData[128] =
164 {
165 // Wave 0
166 /* LenBr */ 0x3F, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x07,
167 /* Opcode*/ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
168 /* Output*/ 0xF1, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
169 /* LFun */ 0xBF, 0xB6, 0x80, 0x12, 0x00, 0x2D, 0x12, 0x3F,
170 // Wave 1
171 /* LenBr */ 0x3F, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x07,
172 /* Opcode*/ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
173 /* Output*/ 0xF1, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
174 /* LFun */ 0xBF, 0xB6, 0x80, 0x12, 0x00, 0x2D, 0x12, 0x3F,
175 // Wave 2
176 /* LenBr */ 0x3F, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x07,
177 /* Opcode*/ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
178 /* Output*/ 0xF1, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
179 /* LFun */ 0xBF, 0xB6, 0x80, 0x12, 0x00, 0x2D, 0x12, 0x3F,
C51 COMPILER V6.10 GPIF 03/12/2008 09:20:47 PAGE 4
180 // Wave 3
181 /* LenBr */ 0x3F, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x07,
182 /* Opcode*/ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
183 /* Output*/ 0xF1, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
184 /* LFun */ 0xBF, 0xB6, 0x80, 0x12, 0x00, 0x2D, 0x12, 0x3F
185 };
186 // END DO NOT EDIT
187
188 // DO NOT EDIT ...
189 const char xdata InitData[7] =
190 {
191 /* Regs */ 0xC0,0x00,0x00,0xF0,0x06,0xE4,0x11
192 };
193 // END DO NOT EDIT
194
195 // TO DO: You may add additional code below.
196
197 void GpifInit( void )
198 {
199 1 BYTE i;
200 1
201 1 // Registers which require a synchronization delay, see section 15.14
202 1 // FIFORESET FIFOPINPOLAR
203 1 // INPKTEND OUTPKTEND
204 1 // EPxBCH:L REVCTL
205 1 // GPIFTCB3 GPIFTCB2
206 1 // GPIFTCB1 GPIFTCB0
207 1 // EPxFIFOPFH:L EPxAUTOINLENH:L
208 1 // EPxFIFOCFG EPxGPIFFLGSEL
209 1 // PINFLAGSxx EPxFIFOIRQ
210 1 // EPxFIFOIE GPIFIRQ
211 1 // GPIFIE GPIFADRH:L
212 1 // UDMACRCH:L EPxGPIFTRIG
213 1 // GPIFTRIG
214 1
215 1 // Note: The pre-REVE EPxGPIFTCH/L register are affected, as well...
216 1 // ...these have been replaced by GPIFTC[B3:B0] registers
217 1
218 1 // 8051 doesn't have access to waveform memories 'til
219 1 // the part is in GPIF mode.
220 1
221 1
222 1 IFCONFIG=0x02; //0000 0010 使用外部时钟,不反转,同步,GPIF方式
223 1 SYNCDELAY;
224 1
225 1 GPIFABORT = 0xFF; // abort any waveforms pending
226 1
227 1 GPIFREADYCFG = InitData[ 0 ];
228 1 GPIFCTLCFG = InitData[ 1 ];
229 1 GPIFIDLECS = InitData[ 2 ];
230 1 GPIFIDLECTL = InitData[ 3 ];
231 1 GPIFWFSELECT = InitData[ 5 ];
232 1 GPIFREADYSTAT = InitData[ 6 ];
233 1
234 1 // use dual autopointer feature...
235 1 AUTOPTRSETUP = 0x07; // inc both pointers,
236 1 // ...warning: this introduces pdata hole(s)
237 1 // ...at E67B (XAUTODAT1) and E67C (XAUTODAT2)
238 1
239 1 // source
240 1 APTR1H = MSB( &WaveData );
241 1 APTR1L = LSB( &WaveData );
C51 COMPILER V6.10 GPIF 03/12/2008 09:20:47 PAGE 5
242 1
243 1 // destination
244 1 AUTOPTRH2 = 0xE4;
245 1 AUTOPTRL2 = 0x00;
246 1
247 1 // transfer
248 1 for ( i = 0x00; i < 128; i++ )
249 1 {
250 2 EXTAUTODAT2 = EXTAUTODAT1;
251 2 }
252 1
253 1 // Configure GPIF Address pins, output initial value,
254 1 PORTCCFG = 0xFF; // [7:0] as alt. func. GPIFADR[7:0]
255 1 OEC = 0xFF; // and as outputs
256 1 PORTECFG |= 0x80; // [8] as alt. func. GPIFADR[8]
257 1 OEE |= 0x80; // ;;;输出!
258 1
259 1 // ...OR... tri-state GPIFADR[8:0] pins
260 1 // PORTCCFG = 0x00; // [7:0] as port I/O
261 1 // OEC = 0x00; // and as inputs
262 1 // PORTECFG &= 0x7F; // [8] as port I/O
263 1 // OEE &= 0x7F; // ;;;输入!
264 1
265 1 // GPIF address pins update when GPIFADRH/L written
266 1 SYNCDELAY; //
267 1 GPIFADRH = 0x00; // bits[7:1] always 0
268 1 SYNCDELAY; //
269 1 GPIFADRL = 0x00; // point to PERIPHERAL address 0x0000
270 1 }
271
272 //#define TESTING_GPIF //在注释掉这一句之后以下代码不参与编译
273 // See the example GPIF Tool Utility under Application ;;;注意 在GPIF 长传输的例子中
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -