📄 main.lst
字号:
C51 COMPILER V7.02b MAIN 02/01/2007 10:35:43 PAGE 1
C51 COMPILER V7.02b, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\Output\main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c OPTIMIZE(9,SPEED) BROWSE INCDIR(Include) DEFINE(READER) DEBUG OBJECT
-EXTEND PRINT(.\Output\main.lst) OBJECT(.\Output\main.obj)
stmt level source
1 /*
2 **********************************************************************************************
3 * Project: TK7821
4 * File: main.c
5 * Contents:
6 * The main and interrupt handler
7 *
8 * $Date: 02/25/05 Jason v0.1
9 * 05/12/05 Mingo v0.2 www.fameg.com
10 *
11 * Copyright (c) 2005 Fameg, Inc. All rights reserved
12 ***********************************************************************************************
13 */
14
15 #include <reg51.h>
16 #include <stdio.h>
17 #include <stdlib.h>
18 #include "Device.h"
19 #include "UsbDisk.h"
20 #include "Storage.h"
21
22 static bit SdGetFlashInfoFlag = false;
23 static bit SuspendFlag = false;
24 bit ResetFlag = false;
25 xdata UINT16 DelayTimer = 0;
26 xdata UINT32 HwVerNum;
27
28 //----------------------------------------------------------------------------
29 // Timeout every 10 ms
30 //----------------------------------------------------------------------------
31 void Timer0() interrupt 1 using 3
32 {
33 1 // Restore the counter to 10 ms
34 1 TH0 = 0xce;
35 1 TL0 = 0xe8;
36 1 // Inc the system tick
37 1 if (DelayTimer)
38 1 DelayTimer --;
39 1
40 1 if (CmdTimer)
41 1 CmdTimer --;
42 1
43 1 if (SdGetFlashInfoTimer)
44 1 {
45 2 SdGetFlashInfoTimer --;
46 2 if (SdGetFlashInfoTimer == 0)
47 2 SdGetFlashInfoFlag = true;
48 2 }
49 1 }
50
51 //----------------------------------------------------------------------------
52 // Enter the suspend mode
53 //----------------------------------------------------------------------------
54 void EnterSuspend()
C51 COMPILER V7.02b MAIN 02/01/2007 10:35:43 PAGE 2
55 {
56 1 BYTE RegValue = CSRRead(USB_BASE + GCTL); //0xF000
57 1
58 1 StorageSuspend();
59 1 POWER_LED_CTRL = 1;
60 1 RegValue |= SUSPEND; //SUSPEND==0x04
61 1 CSRWrite(USB_BASE + GCTL, RegValue);
62 1 while (CSRRead(USB_BASE + GCTL) & SUSPEND);;
63 1 // Ignore unstable clock stage for 100ms
64 1 Delay(100);
65 1 POWER_LED_CTRL = 0;
66 1 StorageResume();
67 1 }
68
69 //----------------------------------------------------------------------------
70 void main()
71 {
72 1 TH0 = 0xce;
73 1 TL0 = 0xe8;
74 1 TMOD = 0x21;
75 1 TCON = 0x50;
76 1 IP = 0x02;
77 1 IE = 0x82;
78 1 NormalSpeed();
79 1 CSRWrite(USB_BASE + GCTL, CSRRead(USB_BASE + GCTL) | RESET);
80 1 POWER_LED_CTRL = 0;
81 1
82 1 HwVerNum = ((UINT32)HwId() << 16) | HwVersion();
83 1
84 1 StorageInit();
85 1 UsbInit();
86 1
87 1 while (true)
88 1 {
89 2 BYTE Event;
90 2
91 2 Event = CSRRead(USB_BASE + EPIE); //0xF001
92 2 if (Event)
93 2 {
94 3 if (Event & (IRQ_RX0 | IRQ_TX0 | IRQ_IN0))
95 3 UsbCtrlIntHandler(Event);
96 3
97 3 if (Event & (IRQ_TX1 | IRQ_RX2))
98 3 {
99 4 UsbBulkIntHandler(Event);
100 4 }
101 3 }
102 2
103 2 Event = CSRRead(USB_BASE + USBIE) & (IRQ_USB_RST | IRQ_IDLE_3MS);//0xF005
104 2 if (Event)
105 2 {
106 3 CSRWrite(USB_BASE + USBIE, ~Event);
107 3
108 3 if (Event & IRQ_USB_RST)
109 3 {
110 4 CSRWrite(USB_BASE + USBADDR, 0); //0xF007
111 4 }
112 3
113 3 if (Event & IRQ_IDLE_3MS)
114 3 {
115 4 EnterSuspend();
116 4 }
C51 COMPILER V7.02b MAIN 02/01/2007 10:35:43 PAGE 3
117 3 }
118 2
119 2 Event = CSRRead(SD_BASE + SD_IE) & SD_CARD_CHANGE;
120 2 if (Event)
121 2 {
122 3 CSRWrite(SD_BASE + SD_IE, ~Event);
123 3 SdIntHandler(Event);
124 3 }
125 2 if (SdGetFlashInfoFlag)
126 2 {
127 3 SdMediaChange();
128 3 SdGetFlashInfoFlag = false;
129 3 }
130 2
131 2 }
132 1 }
133
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 288 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 6 ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 2
IDATA SIZE = ---- ----
BIT SIZE = 3 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -