📄 mainloop.lst
字号:
C51 COMPILER V7.06 MAINLOOP 12/06/2003 10:37:16 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAINLOOP
OBJECT MODULE PLACED IN Mainloop.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE Mainloop.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <stdio.h>
2 #include <string.h>
3
4 #include <reg51.h> /* special function register declarations */
5
6 #include "epphal.h"
7 #include "d12ci.h"
8 #include "mainloop.h"
9 #include "usb100.h"
10 #include "chap_9.h"
11 #include "protodma.h"
12 #include "key_s.h"
13 /*
14 //*************************************************************************
15 // USB protocol function pointer arrays
16 //*************************************************************************
17 */
18
19
20 //USB标准请求
21 code void (*StandardDeviceRequest[])(void) =
22 {
23 get_status,
24 clear_feature,
25 reserved,
26 set_feature,
27 reserved,
28 set_address,
29 get_descriptor,
30 reserved,
31 get_configuration,
32 set_configuration,
33 get_interface,
34 set_interface,
35 reserved,
36 reserved,
37 reserved,
38 reserved
39 };
40
41 //用户厂商请求
42 code void (*VendorDeviceRequest[])(void) =
43 {
44 reserved,
45 reserved,
46 reserved,
47 reserved,
48 reserved,
49 reserved,
50 reserved,
51 reserved,
52 reserved,
53 reserved,
54 reserved,
55 reserved,
C51 COMPILER V7.06 MAINLOOP 12/06/2003 10:37:16 PAGE 2
56 read_write_register,
57 reserved,
58 reserved,
59 reserved
60 };
61
62 /*
63 //*************************************************************************
64 // Public static data
65 //*************************************************************************
66 */
67
68 extern EPPFLAGS bEPPflags;
69 extern unsigned long ClockTicks;
70 extern unsigned char idata GenEpBuf[];
71 extern IO_REQUEST idata ioRequest;
72
73 extern unsigned char ioSize, ioCount;
74 extern unsigned char idata EpBuf[];
75
76 CONTROL_XFER ControlData;
77 BOOL bNoRAM;
78
79 /* Configure Timer 0
80 - Mode = 1
81 - Interrupt = ENABLED
82 - Clock Source = INTERNAL
83 - Enable Gating Control = DISABLED
84 */
85 //定时器0初始化程序
86 //定时器用来定时检测按键状态
87 void init_timer0(void)
88 {
89 1 TMOD &= 0XF0; /* clear Timer 0 */
90 1 TMOD |= 0X1;
91 1 TL0 = 0X0; /* value set by user */
92 1 TH0 = 0X0; /* value set by user */
93 1 ET0 = 1; /* IE.1*/
94 1 TR0 = 1; /* TCON.4 start timer */
95 1 PT0 = 0;
96 1 EA = 1;
97 1 }
98
99 /* Interrupt Control Unit */
100 /* **** Enabled interrupts in Interrupt Enable Register ****
101 **** GLOBAL INTERRUPT MUST BE ENABLED FOR ANY OTHER
102 **** INTERRUPT TO WORK!
103 */
104 /* GLOBAL INTERRUPT DISABLED ALL INTERRUPTS
105 ARE DISABLED */
106 /* External interrupt 0 */
107 /* Priority Level = 0 */
108 /* Timer 0 interrupt */
109 /* Priority Level = 0 */
110 //中断设置
111 void init_special_interrupts(void)
112 {
113 1 IT1 = 0;
114 1 EX1 = 1;
115 1 PX1 = 0;
116 1 }
117
C51 COMPILER V7.06 MAINLOOP 12/06/2003 10:37:16 PAGE 3
118 //I/O口初始化程序
119 void init_port()
120 {
121 1 P0 = 0xFF;
122 1 P1 = 0xFF;
123 1 P2 = 0xFF;
124 1 P3 = 0xFF;
125 1 D12SUSPD = 0;
126 1 }
127
128 void main(void)
129 {
130 1 init_port();//初始化I/O口
131 1
132 1 init_timer0();//初始化定时器0
133 1 init_special_interrupts();//设置中断
134 1
135 1 bEPPflags.value = 0;
136 1
137 1 reconnect_USB();//重新连接USB
138 1
139 1 /* Main program loop */
140 1
141 1 while( TRUE ){
142 2
143 2 if (bEPPflags.bits.timer)
144 2 {
145 3 DISABLE;//定时器溢出,检测按键状态
146 3 bEPPflags.bits.timer = 0;
147 3 ENABLE;
148 3
149 3 if(bEPPflags.bits.configuration)//设备未配置返回
150 3 check_key_LED();
151 3 }
152 2
153 2
154 2 if (bEPPflags.bits.setup_packet){//Setup包处理
155 3 DISABLE;
156 3 bEPPflags.bits.setup_packet = 0;
157 3 ENABLE;
158 3 control_handler();//调用请求处理子程序
159 3 D12SUSPD = 1;
160 3 } // if setup_packet
161 2
162 2 if (bEPPflags.bits.bus_reset) {//设备复位处理
163 3 DISABLE;
164 3 bEPPflags.bits.bus_reset = 0;
165 3 ENABLE;
166 3 // Release D12's SUSPEND pin after bus reset
167 3 // Enable 74HCT123 pulse generation before disconnect
168 3 D12SUSPD = 1;
169 3 } // if bus reset
170 2
171 2 if(bEPPflags.bits.setup_dma != 0) {//DMA状态改变处理
172 3 DISABLE;
173 3 bEPPflags.bits.setup_dma --;
174 3 ENABLE;
175 3 setup_dma();
176 3 } // if setup_dma
177 2 } // Main Loop
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -