📄 mainloop.lst
字号:
C51 COMPILER V7.06 MAINLOOP 11/03/2006 10:24:17 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 OPTIMIZE(2,SPEED) DEBUG OBJECTEXTEND
stmt level source
1 #include <stdio.h>
2 #include <string.h>
3 #include <reg51.h> /* special function register declarations */
4 #include "mainloop.h"
5 #include "isr.h"
6 #include "protozlg.h"
7
8 /*
9 //*************************************************************************
10 // Public static data
11 //*************************************************************************
12 */
13
14 extern EPPFLAGS bEPPflags;
15 extern unsigned char idata GenEpBuf[];
16 extern unsigned char idata EpBuf[];
17 extern unsigned int data d12_addr;
18
19 extern unsigned int data D12_DATA;
20 extern unsigned int data D12_COMMAND;
21
22
23 sfr CKCON = 0x8F;//87C52x2用
24 sbit clksel = P2^0;
25
26 //D12中断服务
27 usb_isr() interrupt 0
28 {
29 1 DISABLE;
30 1 fn_usb_isr();//调用D12中断服务子程序
31 1 ENABLE;
32 1 }
33
34 void delayy(short i)
35 {
36 1 int j=0;
37 1 int k=0;
38 1 k=i*DELAY_VALUE;
39 1 while (j<k) j++;
40 1 }
41
42 unsigned char keyscan()
43 {
44 1
45 1 if (PINDRVKEY1==FALSE) //P1_0 IS 0
46 1 delayy(DELAY_VALUE); //DELAY
47 1 if (PINDRVKEY1==FALSE) //again P1_0 IS 0
48 1 {delayy(DELAY_VALUE); //delay again
49 2 if (PINDRVKEY1==FALSE) //still p1_0 is 0
50 2 return 26;}
51 1
52 1 if (PINDRVKEY2==FALSE) //P1_1 IS 0
53 1 delayy(DELAY_VALUE); //DELAY
54 1 if (PINDRVKEY2==FALSE) //again P1_1 IS 0
55 1 {delayy(DELAY_VALUE); //delay again
C51 COMPILER V7.06 MAINLOOP 11/03/2006 10:24:17 PAGE 2
56 2 if (PINDRVKEY2==FALSE) //still p1_1 is 0
57 2 return 27;}
58 1
59 1 if (PINDRVKEY3==FALSE) //P1_2 IS 0
60 1 delayy(DELAY_VALUE); //DELAY
61 1 if (PINDRVKEY3==FALSE) //again P1_2 IS 0
62 1 {delayy(DELAY_VALUE); //delay again
63 2 if (PINDRVKEY3==FALSE) //still p1_2 is 0
64 2 return 28;}
65 1
66 1 if (PINDRVKEY4==FALSE) //P1_3 IS 0
67 1 delayy(DELAY_VALUE); //DELAY
68 1 if (PINDRVKEY4==FALSE) //again P1_3 IS 0
69 1 {delayy(DELAY_VALUE); //delay again
70 2 if (PINDRVKEY4==FALSE) //still p1_3 is 0
71 2 return 29;}
72 1
73 1 if (PINDRVKEY5==FALSE) //P1_4 IS 0
74 1 delayy(DELAY_VALUE); //DELAY
75 1 if (PINDRVKEY5==FALSE) //again P1_4 IS 0
76 1 {delayy(DELAY_VALUE); //delay again
77 2 if (PINDRVKEY5==FALSE) //still p1_4 is 0
78 2 return 30;}
79 1
80 1 if (PINDRVKEY6==FALSE) //P1_5 IS 0
81 1 delayy(DELAY_VALUE); //DELAY
82 1 if (PINDRVKEY6==FALSE) //again P1_5 IS 0
83 1 {delayy(DELAY_VALUE); //delay again
84 2 if (PINDRVKEY6==FALSE) //still p1_5 is 0
85 2 return 31;}
86 1
87 1 if (PINDRVKEY7==FALSE) //P2_0 IS 0
88 1 delayy(DELAY_VALUE); //DELAY
89 1 if (PINDRVKEY7==FALSE) //again P2_0 IS 0
90 1 {delayy(DELAY_VALUE); //delay again
91 2 if (PINDRVKEY7==FALSE) //still p2_0 is 0
92 2 return 32;}
93 1
94 1 if (PINDRVKEY8==FALSE) //P2_1 IS 0
95 1 delayy(DELAY_VALUE); //DELAY
96 1 if (PINDRVKEY8==FALSE) //again P2_1 IS 0
97 1 {delayy(DELAY_VALUE); //delay again
98 2 if (PINDRVKEY8==FALSE) //still p2_1 is 0
99 2 return 33;}
100 1
101 1 if (PINDRVKEY9==FALSE) //P2_2 IS 0
102 1 delayy(DELAY_VALUE); //DELAY
103 1 if (PINDRVKEY9==FALSE) //again P2_2 IS 0
104 1 {delayy(DELAY_VALUE); //delay again
105 2 if (PINDRVKEY9==FALSE) //still p2_2 is 0
106 2 return 34;}
107 1
108 1 if (PINDRVKEY10==FALSE) //P2_3 IS 0
109 1 delayy(DELAY_VALUE); //DELAY
110 1 if (PINDRVKEY10==FALSE) //again P2_3 IS 0
111 1 {delayy(DELAY_VALUE); //delay again
112 2 if (PINDRVKEY10==FALSE) //still p2_3 is 0
113 2 return 35;}
114 1
115 1 if (PINDRVKEY11==FALSE) //P2_4 IS 0
116 1 delayy(DELAY_VALUE); //DELAY
117 1 if (PINDRVKEY11==FALSE) //again P2_4 IS 0
C51 COMPILER V7.06 MAINLOOP 11/03/2006 10:24:17 PAGE 3
118 1 {delayy(DELAY_VALUE); //delay again
119 2 if (PINDRVKEY11==FALSE) //still p2_4 is 0
120 2 return 36;}
121 1
122 1 if (PINDRVKEY12==FALSE) //P2_5 IS 0
123 1 delayy(DELAY_VALUE); //DELAY
124 1 if (PINDRVKEY12==FALSE) //again P2_5 IS 0
125 1 {delayy(DELAY_VALUE); //delay again
126 2 if (PINDRVKEY12==FALSE) //still p2_5 is 0
127 2 return 37;}
128 1
129 1 if (PINDRVKEY13==FALSE) //P2_6 IS 0
130 1 delayy(DELAY_VALUE); //DELAY
131 1 if (PINDRVKEY13==FALSE) //again P2_6 IS 0
132 1 {delayy(DELAY_VALUE); //delay again
133 2 if (PINDRVKEY13==FALSE) //still p2_6 is 0
134 2 return 38;}
135 1
136 1 if (PINDRVKEY14==FALSE) //P2_7 IS 0
137 1 delayy(DELAY_VALUE); //DELAY
138 1 if (PINDRVKEY14==FALSE) //again P2_7 IS 0
139 1 {delayy(DELAY_VALUE); //delay again
140 2 if (PINDRVKEY14==FALSE) //still p2_7 is 0
141 2 return 39;}
142 1
143 1 if (PINDRVKEY15==FALSE) //P3_0 IS 0
144 1 delayy(DELAY_VALUE); //DELAY
145 1 if (PINDRVKEY15==FALSE) //again P3_0 IS 0
146 1 {delayy(DELAY_VALUE); //delay again
147 2 if (PINDRVKEY15==FALSE) //still p3_0 is 0
148 2 return 40;}
149 1
150 1 if (PINDRVKEY16==FALSE) //P3_1 IS 0
151 1 delayy(DELAY_VALUE); //DELAY
152 1 if (PINDRVKEY16==FALSE) //again P3_1 IS 0
153 1 {delayy(DELAY_VALUE); //delay again
154 2 if (PINDRVKEY16==FALSE) //still p3_1 is 0
155 2 return 41;}
156 1
157 1 return 42;
158 1
159 1 }
160
161
162
163 void main(void)
164 {
165 1 P0 = 0xFF;//初始化I/O口
166 1 P1 = 0xFF;
167 1 P2 = 0xFF;
168 1 P3 = 0xFF;
169 1
170 1 // CKCON = 0x00;
171 1 CKCON = 0x00;
172 1
173 1 // if(clksel == 1)
174 1 // CKCON = CKCON | 0x01;
175 1
176 1 D12_DATA = 0xff02; //定义数据地址
177 1 D12_COMMAND = 0xff03; //定义命令地址
178 1
179 1
C51 COMPILER V7.06 MAINLOOP 11/03/2006 10:24:17 PAGE 4
180 1 MCU_D12CS = 0x0;
181 1 D12SUSPD = 0x0;
182 1
183 1 IT0 = 0;//初始化中断
184 1 EX0 = 1;
185 1 PX0 = 0;
186 1 EA = 1;
187 1
188 1
189 1 MCU_D12CS = 0x1;
190 1 MCU_D12CS = 0x0;
191 1 D12_SetDMA(0x0);
192 1 bEPPflags.value = 0;
193 1
194 1 reconnect_USB();//联接USB总线
195 1
196 1 /* Main program loop */
197 1 while( TRUE ){
198 2 if(bEPPflags.bits.configuration)
199 2 check_key();//连接正常,调用按键和LED控制处理
200 2
201 2 usbserve();//USB服务数据处理
202 2
203 2 } // Main Loop
204 1 }
205
206 void check_key(void)
207 {
208 1 static unsigned char c, last_key =42;
209 1
210 1
211 1 c =keyscan();
212 1 if (c != last_key) {
213 2 D12_WriteEndpoint(3, 1, &c);//按键状态改变,发送信息给主机
214 2 }
215 1 last_key = c;
216 1
217 1
218 1 }
219
220
221
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 641 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 6
IDATA SIZE = ---- ----
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 + -