📄 init.lst
字号:
C51 COMPILER V7.06 INIT 07/02/2003 10:27:48 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE INIT
OBJECT MODULE PLACED IN init.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE init.c OPTIMIZE(2,SPEED) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /****************************************Copyright (c)**************************************************
2 ** 广州周立功单片机发展有限公司
3 ** 研 究 所
4 ** http://www.zlgmcu.com
5 **--------------当前版本修订------------------------------------------------------------------------------
6 ** 修改人: 刘英斌
7 ** 日 期:2003-03-13
8 ** 描 述:ISP1581 V1.0
9 **------------------------------------------------------------------------------------------------------
10 ********************************************************************************************************/
11
12 #include "standard.h"
13 #include "Kernel.h"
14 #include "D14.h"
15
16 //***********************************************************************
17 //* *
18 //* External Variable Definition *
19 //* *
20 //***********************************************************************
21
22 extern void Start_mSEC_Timer(Data);
23 extern void Start_SEC_Timer(Data);
24 extern KERNEL Kernel_Flag;
25 extern USB_INT_FLAG USB_Int_Flag;
26 extern USB_DEVICE USB_Device;
27 extern UI Temp,PIO_Count;
28 extern UC Device_Config_Value;
29 extern UC idata Endpt_FIFO[MAX_BUF];
30 extern void DMA_Init(void);
31 extern ULI bytecount;
32 extern UC Address_Count;
33 extern UC xdata Address[20];
34
35 //***********************************************************************
36 //* *
37 //* Prototype Routine Definition *
38 //* *
39 //***********************************************************************
40
41 void Init_D14_SFR(void);
42 void Init_Endpoint(void);
43
44 void Init_Main(void);
45 void Init_8051(void);
46 void Init_D14(void);
47
48 //***********************************************************************
49 //* *
50 //* Variable Definition *
51 //* *
52 //***********************************************************************
53
54 TIMER Timer;
55 DATA_SWAP idata Data_Swap;
C51 COMPILER V7.06 INIT 07/02/2003 10:27:48 PAGE 2
56 DMA_INT_FLAG DMA_Int_Flag;
57
58 UI count;
59 UC Device_Config_Value;
60 UC Type;
61
62 UI idata Init_Count;
63
64 volatile D14_CNTRL_REG xdata D14_Cntrl_Reg _at_ 0x7000;
65
66 D14_CNTRL_REG xdata *D14_Cntrl_Ptr = &D14_Cntrl_Reg;
67
68
69 //***********************************************************************
70 //* *
71 //* Routine : Init_Main *
72 //* Input : None *
73 //* Output : None *
74 //* Function : To initialize the D14 and the 8051 *
75 //* *
76 //***********************************************************************
77
78 void Init_Main(void)
79 {
80 1
81 1 AUXR = 0x02;
82 1 CKCON = 0x01;
83 1
84 1
85 1 //disable ISP1581 chip select
86 1 ISP1581_CS = 1; //关1581片选
87 1 bytecount = 0;
88 1 PIO_Count = 64;
89 1
90 1 Type = 0;
91 1 USB_Device.BITS.DMA_Test_Mode = PIO_Test;
92 1
93 1 //初始化8051
94 1 Init_8051();
95 1
96 1 ISP1581_CS = 0; //片选ISP1581
97 1
98 1 D14_Cntrl_Reg.D14_MODE.BITS.SOFTCT = 0;
99 1
100 1 //检查是否连接了ISP1581
101 1 do
102 1 {
103 2 //reset ISP1581
104 2 ISP1581_RESET = 0;
105 2 Start_mSEC_Timer(100);
106 2 ISP1581_RESET = 1;
107 2 Start_mSEC_Timer(100);
108 2
109 2 //读取接口器件是否ISP1581
110 2 if(D14_Cntrl_Ptr->D14_CHIP_ID_MBYTE == 0x81 && D14_Cntrl_Ptr->D14_CHIP_ID_MSB == 0x15)
111 2 break;
112 2 }while(1);
113 1
114 1 //初始化标志寄存器
115 1 USB_Int_Flag.VALUE = 0;//USB中断标志寄存器
116 1 DMA_Int_Flag.VALUE = 0;//DMA中断标志寄存器
117 1 Kernel_Flag.VALUE = 0;//ISP1581状态标志寄存器
C51 COMPILER V7.06 INIT 07/02/2003 10:27:48 PAGE 3
118 1
119 1 //设置为设备默认状态
120 1 Kernel_Flag.BITS.HS_FS_State = FULL_SPEED;//设置为全速状态
121 1 HS_FS_LED = FULL_SPEED_LED;
122 1
123 1 //初始化ISP1581
124 1 Init_D14();
125 1 }
126
127
128
129
130 //***********************************************************************
131 //* *
132 //* Routine : Init 8051 *
133 //* Input : 8051 Special Function Register *
134 //* Output : None *
135 //* Function : To initialize 8051 *
136 //* *
137 //***********************************************************************
138
139 void Init_8051(void)
140 {
141 1
142 1 //定义定时器方式
143 1 TMOD = 0x01;
144 1
145 1 //初始化定时器时间
146 1 Timer.mSEC_Scale = 2000;
147 1 Timer.Hundred_mSEC_Scale = 20000;
148 1
149 1 //reset timer control
150 1 TCON = 0;
151 1
152 1 //disable all interrupt
153 1 EA = 0;
154 1
155 1 //disable UART interrupt
156 1 //disable timer 1 overflow interrupt
157 1 //disable external interrupt 1
158 1 //enable timer 0 overflow interrupt
159 1 //enable external interrupt 0
160 1 IE = 0x02;
161 1
162 1 //reset interrupt priority
163 1 IP = 0;
164 1 PT1 = 1;
165 1 PT0 = 1;
166 1 // EX0 = 1; //开ISP1581中断
167 1 //enable all interrupt
168 1 EA = 1;
169 1
170 1
171 1 //disable all power mode control
172 1 //enable half/doble baud rate
173 1 PCON = 0x40;
174 1 }
175
176 //***********************************************************************
177 //* *
178 //* Routine : Init D14 *
179 //* Input : ISP1581 SFR *
C51 COMPILER V7.06 INIT 07/02/2003 10:27:48 PAGE 4
180 //* Output : None *
181 //* Function : To initialize ISP1581 *
182 //* *
183 //***********************************************************************
184
185 void Init_D14(void)
186 {
187 1
188 1 //初始化ISP1581寄存器
189 1 Init_D14_SFR();
190 1
191 1 //初始化ISP1581端点
192 1 Init_Endpoint();
193 1
194 1 //初始化ISP1581工作标志寄存器
195 1 USB_Device.BITS.State = USB_Default;
196 1 Device_Config_Value = 0;
197 1 USB_Device.BITS.Alter_Interface = 0;
198 1 USB_Device.BITS.Big_Endian = On;
199 1 Kernel_Flag.BITS.Tx_Done = 0;
200 1 EX0 = 1; //开ISP1581中断
201 1
202 1 }
203
204 //***********************************************************************
205 //* *
206 //* Routine : Init D14 SFR *
207 //* Input : ISP1581 SFR *
208 //* Output : None *
209 //* Function : To initialize ISP1581 *
210 //* *
211 //***********************************************************************
212
213 void Init_D14_SFR(void)
214 {
215 1 //enable Global Interrupt enable
216 1 //enable soft connect and other feature
217 1 //enable wakeup on chip select
218 1 //disable soft connect
219 1 //设置模式:时钟始终有效,全局中断使能,片选唤醒
220 1 D14_Cntrl_Reg.D14_MODE.VALUE |= 0x8C;
221 1
222 1 //set all interrupt source to mode 1
223 1 //设置全部中断为模式1,电平触发,低电平有效
224 1 D14_Cntrl_Reg.D14_INT_CONFIG.VALUE = 0x54;
225 1
226 1 //设置中断使能寄存器
227 1 //注释: D14_Cntrl_Reg.D14_INT_ENABLE.VALUE = 0x790D0000;先发送高字节
228 1 //0x14(xdata)=0x79
229 1 //0x15(xdata)=0x0D
230 1 //0x16(xdata)=00
231 1 //0x17(xdata0=00
232 1 //使用端点0和端点2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -