📄 main.lst
字号:
C51 COMPILER V8.08 MAIN 04/25/2009 23:03:20 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN MAIN.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE MAIN.C LARGE OMF2 BROWSE DEBUG
line level source
1
2 #include <c8051F020.h>
3 #include "MAIN.H"
4 #include "host_811.H"
5 #include <stdio.h>
6 #include "ufi.h"
7 #include "file.h"
8 #include "api.h"
9
10 #define Clr_WDT() WDTCN=0xa5
11 #define SYSCLK 12000000 // SYSCLK frequency in Hz
12 #define BAUDRATE 9600 // Baud rate of UART in bps
13 extern Control bdata USB_Control;
14 BYTE temp;
15 BYTE temp1;
16 extern struct _FILE ApiFileControl;
17 extern USBDEV idata uDev;
18 //-----------------------------------------------------------------------------
19 // 16-bit SFR Definitions for 'F02x
20 //-----------------------------------------------------------------------------
21 sfr16 DP = 0x82; // data pointer
22 sfr16 TMR3RL = 0x92; // Timer3 reload value
23 sfr16 TMR3 = 0x94; // Timer3 counter
24 sfr16 ADC0 = 0xbe; // ADC0 data
25 sfr16 ADC0GT = 0xc4; // ADC0 greater than window
26 sfr16 ADC0LT = 0xc6; // ADC0 less than window
27 sfr16 RCAP2 = 0xca; // Timer2 capture/reload
28 sfr16 T2 = 0xcc; // Timer2
29 sfr16 RCAP4 = 0xe4; // Timer4 capture/reload
30 sfr16 T4 = 0xf4; // Timer4
31 sfr16 DAC0 = 0xd2; // DAC0 data
32 sfr16 DAC1 = 0xd5; // DAC1 data
33 sfr16 T0 = 0x8a; // Timer0 counter
34 sbit WR=P0^6; //写信号
35 sbit RD=P0^7;
36 sbit nRest=P3^1; //读信号
37 // 函数声明
38 //----------------------------------
39 void SYSCLK_Init (void);
40 void PORT_Init (void);
41 void SYS_Init (void);
42 void WDT_Init(void);
43 void EMIF_Init (void);
44 void Deivce_Init(void);
45 void delay(unsigned int t);
46 void UART0_Tnit(void);
47 char getchar (void);
48 char putchar (char a);
49 void Init_Interrupt(void);
50 xdata BYTE buf1[5120] _at_ 0x8000;
51 xdata BYTE buf2[500] _at_ 0xd400;
52 void main()
53 {
54 1
55 1
C51 COMPILER V8.08 MAIN 04/25/2009 23:03:20 PAGE 2
56 1 BYTE i;
57 1 unsigned int temp;
58 1 while(1);
59 1 Deivce_Init();
60 1 DelayMs(6);
61 1 nRest=1;
62 1 Init_Interrupt();
63 1 sl811h_init();
64 1 ENABLE_INTERRUPTS;
65 1 for(temp=0;temp<5120;temp++)
66 1 {buf1[temp]='A';}
67 1 while(TRUE)
68 1 {
69 2 if(1)
70 2 {
71 3 Clr_WDT();
72 3
73 3 i=SL811Read(IntStatus);
74 3
75 3 if((USB_RESET&i)) //没有接入设备;
76 3 {
77 4 if(USB_Control.SLAVE_ONLINE ==TRUE)
78 4 {
79 5 USB_Control.SLAVE_REMOVED=TRUE;
80 5 USB_Control.SLAVE_ONLINE =FALSE; //显而易见;
81 5
82 5 }
83 4 }
84 3 else
85 3 {
86 4 if(USB_Control.SLAVE_ONLINE == FALSE&&(i|0x7F))
87 4 {
88 5 USB_Control.SLAVE_FOUND=TRUE;
89 5 USB_Control.SLAVE_ONLINE =TRUE; //显而易见;
90 5 }
91 4 }
92 3 if(USB_Control.SLAVE_FOUND)
93 3 {
94 4 DISABLE_INTERRUPTS;
95 4 USB_Control.SLAVE_FOUND=FALSE;
96 4
97 4 if(EnumUsbDev(1))
98 4 USB_Control.SLAVE_ENUMERATED = TRUE;
99 4 PollDisk();
100 4 InitFsys();
101 4 CreateFile("demo.txt",0x20);
102 4 WriteFile(buf1,1000);
103 4 CloseFile();
104 4 OpenFile("demo.txt");
105 4 ApiFileControl.CurrentSectorNum=ApiFileControl.StartSectorNum;
106 4 ApiFileControl.SectorOffset=0;
107 4 ReadFile(buf2,500);
108 4 CreateDir("www\\demo.txt");
109 4 //DelFile("demo.txt");
110 4 ENABLE_INTERRUPTS;
111 4 }
112 3 if(USB_Control.bMassDevice)
113 3 {
114 4 DISABLE_INTERRUPTS;
115 4 USB_Control.bMassDevice=FALSE;
116 4 ENABLE_INTERRUPTS;
117 4 }
C51 COMPILER V8.08 MAIN 04/25/2009 23:03:20 PAGE 3
118 3 }
119 2
120 2 }
121 1
122 1
123 1
124 1
125 1 }
126
127
128 void delay(unsigned int t)
129 {
130 1 unsigned int i;
131 1 for(i=0;i<1000;i++)
132 1 {
133 2 while(t--)
134 2 {
135 3 t++;
136 3 t--;
137 3 }
138 2 Clr_WDT();
139 2 }
140 1 }
141 void SYS_Init()
142 {
143 1 EA =0; //关中断
144 1 }
145
146 void Init_Interrupt(void)//
147 {
148 1 IT0 = 0; //低电平触发中断;
149 1 EX0 = 1;
150 1 }
151 /*
152 ***********************************************************
153 *程序名 WDT_Init
154 *作用 :看门狗初始化
155 *参数 :无
156 *返回值 :无
157 *作者 :李本斋
158 *日期 : 2008.12.20
159 *版权声明:
160 ***********************************************************
161 */
162 void WDT_Init(void)
163 {
164 1 WDTCN = 0xFF;
165 1 WDTCN =0x06;//10ms //b2b1b0为周期设置位
166 1 }
167 /*
168 ***********************************************************
169 *程序名 SYSCLK_Init
170 *作用 :时钟初始化
171 *参数 :无
172 *返回值 :无
173 *作者 :李本斋
174 *日期 : 2008.12.20
175 *版权声明:
176 ***********************************************************
177 */
178 void SYSCLK_Init (void)
179 {
C51 COMPILER V8.08 MAIN 04/25/2009 23:03:20 PAGE 4
180 1 int i; // delay counter// start external oscillator with
181 1 OSCXCN = 0x67; // 22.1184MHz crystal
182 1 for (i=0; i < 256; i++) ; // Wait for osc. to start up
183 1 while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle
184 1 OSCICN = 0x88; // select external oscillator as SYSCLK
185 1 // source and enable missing clock // detector
186 1 }
187 // Configure the Crossbar and GPIO ports
188 /*
189 ***********************************************************
190 *程序名 PORT_Init
191 *作用 :端口初始化
192 *参数 :无
193 *返回值 :无
194 *作者 :李本斋
195 *日期 : 2008.12.20
196 *版权声明:
197 ***********************************************************
198 */
199 void PORT_Init (void)
200 {
201 1 XBR0 = 0x05;
202 1 XBR1 = 0x00;
203 1 XBR2 = 0x40;
204 1 // Enable crossbar and weak pull-ups
205 1
206 1 P3MDOUT = 0xFF;
207 1 P2MDOUT = 0xFF;
208 1 P1MDOUT = 0xFF;
209 1 P0MDOUT = 0xFF;
210 1 P74OUT = 0xFF;
211 1 }
212
213 //-----------------------------------------------------------------------------
214 // EMIF_Init
215 //-----------------------------------------------------------------------------
216 //
217 // Configure the external memory interface to use upper port pins in
218 // non-multiplexed mode to a mixed on-chip/off-chip configuration without
219 // Bank Select.
220 //
221 void EMIF_Init (void)
222 {
223 1 EMI0TC = 0x20;// upper ports; non-muxed mode; // fastest timing (4-cycle MOVX) // split mode w/o ban
-k select
224 1 EMI0CF = 0x38;
225 1 // EMI0CF = 0x2f;
226 1 }
227
228 void Deivce_Init(void)
229 {
230 1 SYSCLK_Init(); //系统时钟配置
231 1 WDT_Init(); //看门狗初始化
232 1 EMIF_Init(); //外部存储器访问初始化
233 1 PORT_Init(); //端口配置
234 1 SYS_Init();
235 1 UART0_Tnit(); //系统数据初始化
236 1 }
237 void UART0_Tnit(void)
238 {
239 1 SCON0 = 0x50; // SCON0: mode 1, 8-bit UART, enable RX
240 1 TMOD = 0x21; // TMOD: timer 1, mode 2, 8-bit reload
C51 COMPILER V8.08 MAIN 04/25/2009 23:03:20 PAGE 5
241 1 TH1 = -(SYSCLK/BAUDRATE/16); // set Timer1 reload value for baudrate9600
242 1 TR1 = 1; // start Timer1
243 1 CKCON |= 0x10; // Timer1 uses SYSCLK as time base
244 1 PCON |= 0x80; // SMOD00 = 1
245 1 ES0 = 0; // disable UART0 interrupts
246 1
247 1 TI0 = 0; // Indicate TX0 ready
248 1 }
249
250 char getchar (void)
251 {
252 1 char a;
253 1 while(!RI0)
254 1 Clr_WDT();
255 1 RI0 =0;
256 1 a = SBUF0;
257 1 return a;
258 1 }
259
260 char putchar (char a)
261 {
262 1 SBUF0 = a;
263 1 while(!TI0);
264 1 Clr_WDT();
265 1 TI0 =0;
266 1 return 0;
267 1 }
268 void ISR_INT0(void) interrupt 0
269 {
270 1 DISABLE_INTERRUPTS;
271 1 SL811Write(IntStatus,INT_CLEAR);
272 1 // UsbEvent=TRUE;
273 1 ENABLE_INTERRUPTS;
274 1 }
275
276
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 253 ----
CONSTANT SIZE = 22 ----
XDATA SIZE = 2 2
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
EDATA SIZE = ---- ----
HDATA SIZE = ---- ----
XDATA CONST SIZE = ---- ----
FAR CONST SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -