📄 mainloop.lst
字号:
C51 COMPILER V6.12 MAINLOOP 06/06/2004 10:26:11 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE MAINLOOP
OBJECT MODULE PLACED IN .\MAINLOOP.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\MAINLOOP.C LARGE DEBUG OBJECTEXTEND
stmt level source
1 //////MAINLOOP.C
2 #include "common.h"
3 #include "mainloop.h"
4 #include "d12ci.h"
5 #include "disp.h"
6 #include "isr.h"
7 #include "chap_9.h"
8 #include "protodma.h"
9
10 EPPFLAGS bEPPflags;
11
12 uchar GenEpBuf[EP1_PACKET_SIZE];
13 uchar EpBuf[EP2_PACKET_SIZE];
14 IO_REQUEST idata ioRequest;
15 unsigned char ioSize, ioCount;
16 unsigned long ClockTicks = 0;
17 uchar xdata MainEpBuf[256];
18
19 void init_timer0(void)
20 {
21 1 TMOD &= 0xF0;
22 1 TMOD |= 0x1;
23 1 TL0 = 0x0;
24 1 TH0 = 0x0;
25 1 ET0 = 1;
26 1 TR0 = 1;
27 1 PT0 = 1;
28 1 EA = 1;
29 1 }
30 void init_special_interrupts(void)
31 {
32 1 IT0 = 0;
33 1 EX0 = 1;
34 1 PX0 = 0;
35 1 }
36 void init_port()
37 {
38 1 P0 = 0xff;
39 1 P1 = 0xff;
40 1 P2 = 0xff;
41 1 P3 = 0xff;
42 1 // MCU_D12CS = 0x0;
43 1 D12SUSPD = 0;
44 1 }
45 void disconnect_USB(void)
46 {
47 1 D12_SetMode(D12_NOLAZYCLOCK,D12_SETTOONE|D12_CLOCK_12M);
48 1 }
49 void connect_USB(void)
50 {
51 1 DISABLE;
52 1 bEPPflags.value = 0;
53 1 ENABLE;
54 1 D12_SetMode(D12_NOLAZYCLOCK|D12_SOFTCONNECT,D12_SETTOONE|D12_CLOCK_12M);
55 1 }
C51 COMPILER V6.12 MAINLOOP 06/06/2004 10:26:11 PAGE 2
56 void reconnect_USB(void)
57 {
58 1 unsigned long clk_cnt;
59 1 MCU_LED0 = 0;
60 1 MCU_LED1 = 0;
61 1 D12SUSPD = 0;
62 1 disconnect_USB();
63 1 for(clk_cnt = 0;clk_cnt<10000;clk_cnt++);
64 1 connect_USB();
65 1 MCU_LED0 = 1;
66 1 MCU_LED1 = 1;
67 1 }
68
69 void check_key_LED(void)
70 {
71 1 static unsigned char c, last_key = 0xf;
72 1 uchar cc[8]={0,0,0,0,0,0,0,0};
73 1 c = MCU_SWM0 & MCU_SWM1;
74 1 c &= 0x0f;
75 1 if (c != last_key) {
76 2 // D12_WriteEndpoint(3, 1, &c);
77 2 if(c == 0)
78 2 cc[2] = 5;/*相当于‘b按下’*/
79 2 else
80 2 cc[2] = 0;
81 2 D12_WriteEndpoint(3, 8, cc);
82 2 }
83 1 last_key = c;
84 1 if(bEPPflags.bits.ep1_rxdone) {
85 2 DISABLE;
86 2 bEPPflags.bits.ep1_rxdone = 0;
87 2 ENABLE;
88 2 MCU_LED0 = !(GenEpBuf[3] & 0x1);
89 2 MCU_LED1 = !(GenEpBuf[3] & 0x2);
90 2 }
91 1 }
92
93 main()
94 {
95 1 // uchar key,i;
96 1 initcom();
97 1 initlcd();
98 1 D12_ReadInterruptRegister();
99 1 D12_ReadInterruptRegister();
100 1 D12_ReadInterruptRegister();
101 1 D12_ReadInterruptRegister();
102 1 D12_ReadInterruptRegister();
103 1 D12_ReadLastTransactionStatus(0);
104 1 D12_ReadLastTransactionStatus(1);
105 1 D12_ReadLastTransactionStatus(2);
106 1 D12_ReadLastTransactionStatus(3);
107 1 D12_ReadLastTransactionStatus(4);
108 1 D12_ReadLastTransactionStatus(5);
109 1
110 1 // bEPPflags.bits.bus_reset = 1;
111 1 init_port();
112 1 init_timer0();
113 1 init_special_interrupts();
114 1 // MCU_D12CS = 1;
115 1 // MCU_D12CS = 0;
116 1 bEPPflags.value = 0;
117 1 reconnect_USB();
C51 COMPILER V6.12 MAINLOOP 06/06/2004 10:26:11 PAGE 3
118 1 initlcd();
119 1 dispinfo(1,"Test!");
120 1
121 1
122 1 while(1)
123 1 {
124 2 if(bEPPflags.bits.timer)
125 2 {
126 3 //dispinfo(1,"timer");
127 3 DISABLE;
128 3 bEPPflags.bits.timer = 0;
129 3 ENABLE;
130 3 if(bEPPflags.bits.configuration)
131 3 check_key_LED();
132 3 }
133 2 if(bEPPflags.bits.bus_reset)
134 2 {
135 3 //dispinfo(1," bus_reset");
136 3 DISABLE;
137 3 bEPPflags.bits.bus_reset = 0;
138 3 ENABLE;
139 3 // D12SUSPD = 1;
140 3 }
141 2 if(bEPPflags.bits.suspend)
142 2 {
143 3 //dispinfo(1," suspend");
144 3 DISABLE;
145 3 bEPPflags.bits.suspend = 0;
146 3 ENABLE;
147 3 if(D12SUSPD == 1)
148 3 {
149 4 D12SUSPD = 0;
150 4 P0 = 0xff;
151 4 P1 = 0xff;
152 4 P2 = 0xff;
153 4 P3 = 0xff;
154 4 // D12SUSPD = 1;
155 4 // PCON |= 0x02;
156 4 // while(1);
157 4 }
158 3 }
159 2 // bEPPflags.bits.setup_packet=1;
160 2 if(bEPPflags.bits.setup_packet)
161 2 {
162 3 // dispinfo(1," Setup packet");
163 3 DISABLE;
164 3 bEPPflags.bits.setup_packet = 0;
165 3 ENABLE;
166 3 control_handler();
167 3 //D12SUSPD = 1;
168 3 }
169 2 }
170 1 }
171 timer_isr() interrupt 1
172 {
173 1 DISABLE;
174 1 bEPPflags.bits.timer = 1;
175 1 ENABLE;
176 1 // inportb(12);
177 1 }
178 usb_isr() interrupt 0
179 {
C51 COMPILER V6.12 MAINLOOP 06/06/2004 10:26:11 PAGE 4
180 1 DISABLE;
181 1 fn_usb_isr();
182 1 ENABLE;
183 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 542 ----
CONSTANT SIZE = 14 ----
XDATA SIZE = 347 12
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = 6 ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -