📄 init.lst
字号:
162 //***********************************************************************
163
164 void Init_8051(void)
165 {
166 1
167 1 //定义定时器方式
168 1 TMOD = 0x11;
169 1
170 1 //初始化定时器时间
171 1 Timer.mSEC_Scale = 2000;
172 1 Timer.Hundred_mSEC_Scale = 20000;
173 1 TL1=80;
174 1 TH1=60;
175 1 //reset timer control
176 1 TCON = 0;
177 1
178 1 //disable all interrupt
179 1 EA = 0;
C51 COMPILER V7.01 INIT 03/28/2003 14:38:29 PAGE 4
180 1
181 1 //disable UART interrupt
182 1 //disable timer 1 overflow interrupt
183 1 //disable external interrupt 1
184 1 //enable timer 0 overflow interrupt
185 1 //enable external interrupt 0
186 1 IE = 0x03;
187 1 ET1=1;
188 1 //reset interrupt priority
189 1 IP = 0;
190 1 PT1 = 1;
191 1 PT0 = 1;
192 1 // EX0 = 1; //开ISP1581中断
193 1 //enable all interrupt
194 1 EA = 1;
195 1 TR1=1;
196 1
197 1 //disable all power mode control
198 1 //enable half/doble baud rate
199 1 PCON = 0x40;
200 1 }
201
202 //***********************************************************************
203 //* *
204 //* Routine : Init D14 *
205 //* Input : ISP1581 SFR *
206 //* Output : None *
207 //* Function : To initialize ISP1581 *
208 //* *
209 //***********************************************************************
210
211 void Init_D14(void)
212 {
213 1
214 1 //初始化ISP1581寄存器
215 1 Init_D14_SFR();
216 1
217 1 //初始化ISP1581端点
218 1 Init_Endpoint();
219 1
220 1 //初始化ISP1581工作标志寄存器
221 1 USB_Device.BITS.State = USB_Default;
222 1 Device_Config_Value = 0;
223 1 USB_Device.BITS.Alter_Interface = 0;
224 1 USB_Device.BITS.Big_Endian = On;
225 1 Kernel_Flag.BITS.Tx_Done = 0;
226 1 EX0 = 1; //开ISP1581中断
227 1
228 1 }
229
230 //***********************************************************************
231 //* *
232 //* Routine : Init D14 SFR *
233 //* Input : ISP1581 SFR *
234 //* Output : None *
235 //* Function : To initialize ISP1581 *
236 //* *
237 //***********************************************************************
238
239 void Init_D14_SFR(void)
240 {
241 1 //enable Global Interrupt enable
C51 COMPILER V7.01 INIT 03/28/2003 14:38:29 PAGE 5
242 1 //enable soft connect and other feature
243 1 //enable wakeup on chip select
244 1 //disable soft connect
245 1 //设置模式:时钟始终有效,全局中断使能,片选唤醒
246 1 D14_Cntrl_Reg.D14_MODE.VALUE |= 0x8C;
247 1
248 1 //set all interrupt source to mode 1
249 1 //设置全部中断为模式1,电平触发,低电平有效
250 1 D14_Cntrl_Reg.D14_INT_CONFIG.VALUE = 0x54;
251 1
252 1 //设置中断使能寄存器
253 1 //注释: D14_Cntrl_Reg.D14_INT_ENABLE.VALUE = 0x790D0000;先发送高字节
254 1 //0x14(xdata)=0x79
255 1 //0x15(xdata)=0x0D
256 1 //0x16(xdata)=00
257 1 //0x17(xdata0=00
258 1 //使用端点0和端点2
259 1 D14_Cntrl_Reg.D14_INT_ENABLE.VALUE = 0x39fd0000;
260 1
261 1 }
262
263
264 //***********************************************************************
265 //* *
266 //* Routine : Init Endpoint *
267 //* Input : ISP1581 FIFO *
268 //* Output : None *
269 //* Function : To initialize ISP1581 endpoint FIFO *
270 //* *
271 //***********************************************************************
272
273 void Init_Endpoint(void)
274 {
275 1 //设置全速端点
276 1 if(Kernel_Flag.BITS.HS_FS_State == FULL_SPEED)
277 1 {
278 2 //设置全速端点FIFO大小
279 2
280 2 //Interrupt Out MaxPacketSize Endpoint
281 2 D14_Cntrl_Reg.D14_ENDPT_INDEX = 2;//选择端点
282 2 D14_Cntrl_Reg.D14_ENDPT_MAXPKTSIZE.VALUE = 0x4000; //FIFO=64bytes
283 2
284 2 //Interrupt In MaxPacketSize Endpoint
285 2 D14_Cntrl_Reg.D14_ENDPT_INDEX = 3;//选择端点
286 2 D14_Cntrl_Reg.D14_ENDPT_MAXPKTSIZE.VALUE = 0x4000;//FIFO=64bytes
287 2
288 2 //Bulk Out MaxPacketSize Endpoint
289 2 D14_Cntrl_Reg.D14_ENDPT_INDEX = 4;//选择端点
290 2 D14_Cntrl_Reg.D14_ENDPT_MAXPKTSIZE.VALUE = 0x4000;//FIFO=64bytes
291 2
292 2
293 2 //Bulk In MaxPacketSize Endpoint
294 2 D14_Cntrl_Reg.D14_ENDPT_INDEX = 5;//选择端点
295 2 D14_Cntrl_Reg.D14_ENDPT_MAXPKTSIZE.VALUE = 0x4000;//FIFO=64bytes
296 2
297 2
298 2 //Iso Out MaxPacketSize Endpoint
299 2 D14_Cntrl_Reg.D14_ENDPT_INDEX = 6;//选择端点
300 2 D14_Cntrl_Reg.D14_ENDPT_MAXPKTSIZE.VALUE = 0x4000;//FIFO=64bytes
301 2
302 2 //Iso In MaxPacketSize Endpoint
303 2 D14_Cntrl_Reg.D14_ENDPT_INDEX = 7;//选择端点
C51 COMPILER V7.01 INIT 03/28/2003 14:38:29 PAGE 6
304 2 D14_Cntrl_Reg.D14_ENDPT_MAXPKTSIZE.VALUE = 0x4000;//FIFO=64bytes
305 2
306 2 //设置全速端点类型
307 2
308 2 //Interrupt In Endpoint Type
309 2 D14_Cntrl_Reg.D14_ENDPT_INDEX = 2;//选择端点
310 2 D14_Cntrl_Reg.D14_ENDPT_TYPE.VALUE = 0x1700;//设置为中断,使用双缓冲,禁止FIFO,禁止无空包
311 2
312 2
313 2 //Interrupt Out Endpoint Type
314 2 D14_Cntrl_Reg.D14_ENDPT_INDEX = 3;//选择端点
315 2 D14_Cntrl_Reg.D14_ENDPT_TYPE.VALUE = 0x1700;//设置为中断,使用双缓冲,禁止FIFO,禁止无空包
316 2
317 2
318 2 //Bulk Out Endpoint Type
319 2 D14_Cntrl_Reg.D14_ENDPT_INDEX = 4;//选择端点
320 2 D14_Cntrl_Reg.D14_ENDPT_TYPE.VALUE = 0x1600;//设置为批量,使用双缓冲,禁止FIFO,禁止无空包
321 2
322 2
323 2 //Bulk In Endpoint Type
324 2 D14_Cntrl_Reg.D14_ENDPT_INDEX = 5;//选择端点
325 2 D14_Cntrl_Reg.D14_ENDPT_TYPE.VALUE = 0x1600;//设置为批量,使用双缓冲,禁止FIFO,禁止无空包
326 2
327 2
328 2 //Iso Out Endpoint Type
329 2 D14_Cntrl_Reg.D14_ENDPT_INDEX = 6;//选择端点
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -