📄 main.lst
字号:
C51 COMPILER V7.06 MAIN 10/03/2008 17:28:23 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN Main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /**************************************
2 * copyright:tiany
3 * time:2008-9-20
4 **************************************/
5
6 #include <reg52.h>
7 #include "lcd.h"
8 #include "main.h"
9 #include "speech.h"
10
11 uchar button,buttonflag,menuflag,buttonplay,speed,moveflag,pauseflag;//send/*发球标志位*/;
12 num_info gamenum={0,0,0,0};//比分信息结构体
13
14 void main()
15 {
16 1 uchar wdata;
17 1 speed=3;
18 1 EA=1;
19 1 EX1=1;//int1
20 1 IT1=1;
21 1 EX0=1;//int0
22 1 IT0=1;
23 1 LCD_Initial();
24 1 LCD_CLR(R);
25 1 put_picture_half(Bmp1,L);
26 1 Delay_x10ms(100);LCD_CLR(L);
27 1 put_picture_half(Bmp1,L);
28 1 Delay_x10ms(100);LCD_CLR(L);
29 1 put_picture_half(Bmp1,R);
30 1 for(;;)
31 1 {
32 2 button=0;
33 2 buttonflag=0;
34 2 menuflag=0;
35 2 buttonplay=0;
36 2 pauseflag=0;
37 2 LCD_CLR(L);LCD_CLR(R);
38 2 put_picture_half(Bmp1,R);
39 2 put_menu(1,0);
40 2 put_menu(2,0);
41 2 put_menu(3,0);
42 2 wdata=0;
43 2 gamenum.mark1=0,gamenum.mark2=0,gamenum.game1=0,gamenum.game2=0;
44 2 while(!wdata)
45 2 {
46 3 while(!buttonflag);
47 3 buttonflag=0;
48 3 switch(button)
49 3 {
50 4 case DOWN:
51 4 {
52 5 put_menu(1,0);
53 5 put_menu(2,0);
54 5 put_menu(3,0);
55 5 if(menuflag==3) menuflag=1;
C51 COMPILER V7.06 MAIN 10/03/2008 17:28:23 PAGE 2
56 5 else menuflag+=1;
57 5 put_menu(menuflag,1);
58 5 break;
59 5 }
60 4
61 4 case UP:
62 4 {
63 5 put_menu(1,0);
64 5 put_menu(2,0);
65 5 put_menu(3,0);
66 5 if(menuflag<=1) menuflag=3;
67 5 else menuflag-=1;
68 5 put_menu(menuflag,1);
69 5 break;
70 5 }
71 4
72 4 case ENTER:
73 4 {
74 5 switch(menuflag)
75 5 {
76 6 case 1://singlaplay
77 6 wdata=singlaplay();
78 6 break;
79 6 case 2://doubleplay
80 6 wdata=doubleplay();
81 6 break;
82 6 case 3://setingmenu
83 6 wdata=settingmenu();
84 6 break;
85 6 default:break;
86 6 }
87 5 break;
88 5 }
89 4
90 4 case EXIT:break;
91 4 default:break;
92 4 }
93 3 }
94 2 }
95 1 }
96
97
98 /////////////////////////////////////
99 //设置难度选项
100 /////////////////////////////////////
101 uchar settingmenu()
102 {
103 1 LCD_CLR(L);
104 1 put_menu(4,0);
105 1 put_menu(5,0);
106 1 put_menu(6,0);
107 1 menuflag=0;
108 1 while(1)
109 1 {
110 2 while(!buttonflag);
111 2 buttonflag=0;
112 2 switch(button)
113 2 {
114 3 case DOWN:
115 3 {
116 4 put_menu(4,0);
117 4 put_menu(5,0);
C51 COMPILER V7.06 MAIN 10/03/2008 17:28:23 PAGE 3
118 4 put_menu(6,0);
119 4 if(menuflag==3) menuflag=1;
120 4 else menuflag+=1;
121 4 put_menu(menuflag+3,1);
122 4 break;
123 4 }
124 3 case UP:
125 3 {
126 4 put_menu(4,0);
127 4 put_menu(5,0);
128 4 put_menu(6,0);
129 4 if(menuflag<=1) menuflag=3;
130 4 else menuflag-=1;
131 4 put_menu(menuflag+3,1);
132 4 break;
133 4 }
134 3 case ENTER:
135 3 {
136 4 switch(menuflag)
137 4 {
138 5 case 1:speed=1;break;
139 5 case 2:speed=4;break;
140 5 case 3:speed=7;break;
141 5 default:break;
142 5 }
143 4 return 1;
144 4 }
145 3 case EXIT:
146 3 {
147 4 return 1;
148 4 }
149 3 default:break;
150 3 }
151 2 }
152 1 }
153
154
155
156 void int1() interrupt 2 using 3
157 {
158 1 P2=0xFF;
159 1 buttonflag=1;
160 1 button=P2&0xF0;
161 1 moveflag=P2&0xF0;
162 1 pauseflag=P2&0xF0;
163 1 }
164
165
166 void put_menu(uchar menuid,uchar reverse)
167 {
168 1 switch(menuid)
169 1 {
170 2 case 1://单人游戏
171 2 {
172 3 put_chinese(chinese[0],0,0,reverse);
173 3 put_chinese(chinese[2],0,16,reverse);
174 3 put_chinese(chinese[3],0,32,reverse);
175 3 put_chinese(chinese[4],0,48,reverse);break;
176 3 }
177 2 case 2://双人游戏
178 2 {
179 3 put_chinese(chinese[1],2,0,reverse);
C51 COMPILER V7.06 MAIN 10/03/2008 17:28:23 PAGE 4
180 3 put_chinese(chinese[2],2,16,reverse);
181 3 put_chinese(chinese[3],2,32,reverse);
182 3 put_chinese(chinese[4],2,48,reverse);break;
183 3 }
184 2 case 3://游戏设置
185 2 {
186 3 put_chinese(chinese[3],4,0,reverse);
187 3 put_chinese(chinese[4],4,16,reverse);
188 3 put_chinese(chinese[5],4,32,reverse);
189 3 put_chinese(chinese[6],4,48,reverse);break;
190 3 }
191 2 case 4://专家
192 2 {
193 3 put_chinese(chinese[7],0,16,reverse);
194 3 put_chinese(chinese[8],0,32,reverse);break;
195 3 }
196 2 case 5://高手
197 2 {
198 3 put_chinese(chinese[9],2,16,reverse);
199 3 put_chinese(chinese[10],2,32,reverse);break;
200 3 }
201 2 case 6://菜鸟
202 2 {
203 3 put_chinese(chinese[11],4,16,reverse);
204 3 put_chinese(chinese[12],4,32,reverse);break;
205 3 }
206 2 default:
207 2 break;
208 2 }
209 1 }
210 //=============================================
211 //斜线移动:向左下移动
212 //=============================================
213 uchar Ball_MoveLeftDown(uint speed)
214 {
215 1 uchar j,wdata;
216 1 int i;
217 1 for(i=8;i>0;i--)
218 1 {
219 2 wdata=0x03;
220 2 for(j=1;j<8;j+=2)
221 2 {
222 3 if(j)
223 3 {
224 4 LCD_WriteData(0x00,8-i,64+i*8-j+2);//CLR
225 4 LCD_WriteData(0x00,8-i,64+i*8-j+1);
226 4 }
227 3
228 3 LCD_WriteData(wdata,8-i,64+i*8-j);
229 3 LCD_WriteData(wdata,8-i,64+i*8-j-1);
230 3 wdata=wdata<<2;
231 3 Delay_x10ms(speed*10);
232 3 pause();
233 3 }
234 2 if(buttonplay)
235 2 {
236 3 buttonplay=0;
237 3 if((button==0x02)&&(i<=1)) return 0;
238 3 else if(button==0x02||button==0x01) return 1;
239 3 }
240 2 LCD_WriteData(0x00,8-i,64+i*8-j+2);
241 2 LCD_WriteData(0x00,8-i,64+i*8-j+1);
C51 COMPILER V7.06 MAIN 10/03/2008 17:28:23 PAGE 5
242 2
243 2 }
244 1 return 1;
245 1 }
246 //=============================================
247 //斜线移动:向右上移动
248 //=============================================
249 uchar Ball_MoveRightUp(uint speed)
250 {
251 1 uchar i,j,wdata;
252 1 for(i=0;i<8;i++)
253 1 {
254 2 wdata=0xc0;
255 2 for(j=0;j<8;j+=2)
256 2 {
257 3 if(j)
258 3 {
259 4 LCD_WriteData(0x00,7-i,64+i*8+j-2);//CLR
260 4 LCD_WriteData(0x00,7-i,64+i*8+j-1);
261 4 }
262 3
263 3 LCD_WriteData(wdata,7-i,64+i*8+j);
264 3 LCD_WriteData(wdata,7-i,64+i*8+j+1);
265 3 wdata=wdata>>2;
266 3 Delay_x10ms(speed*10);
267 3 if(i==7&&j>=4) j=10;
268 3 pause();
269 3 }
270 2 if(buttonplay)
271 2 {
272 3 buttonplay=0;
273 3 if((button==0x08)&&(i>=7)) return 0; //p2.1
274 3 else if(button==0x08||button==0x04) return 2;
275 3 }
276 2 LCD_WriteData(0x00,7-i,64+i*8+j-2);
277 2 LCD_WriteData(0x00,7-i,64+i*8+j-1);
278 2
279 2 }
280 1 return 2;
281 1 }
282
283 //=============================================
284 //斜线移动:向左上移动
285 //=============================================
286 uchar Ball_MoveLeftUp(uint speed)
287 {
288 1 uchar j,wdata;
289 1 int i;
290 1 for(i=8;i>0;i--)//向左上移动
291 1 {
292 2 wdata=0xc0;
293 2 for(j=1;j<8;j+=2)
294 2 {
295 3 if(j)
296 3 {
297 4 LCD_WriteData(0x00,i-1,64+i*8-j+2);//CLR
298 4 LCD_WriteData(0x00,i-1,64+i*8-j+1);
299 4 }
300 3
301 3 LCD_WriteData(wdata,i-1,64+i*8-j);
302 3 LCD_WriteData(wdata,i-1,64+i*8-j-1);
303 3 wdata=wdata>>2;
C51 COMPILER V7.06 MAIN 10/03/2008 17:28:23 PAGE 6
304 3 Delay_x10ms(speed*10);
305 3 pause();
306 3 }
307 2 if(buttonplay)
308 2 {
309 3 buttonplay=0;
310 3 if((button==0x01)&&(i<=1)) return 0; //p2.2
311 3 else if(button==0x01||button==0x02) return 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -