📄 main.lst
字号:
C51 COMPILER V7.06 MAIN 09/23/2008 04:07:57 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
10
11 uchar button,buttonflag,menuflag,buttonplay,speed;//send/*发球标志位*/;
12 num_info gamenum={0,0,0,0};//比分信息结构体
13 //press_button play_button;
14
15
16 void main()
17 {
18 1 // int i,j;
19 1 uchar wdata;
20 1
21 1 speed=1;
22 1 EA=1;
23 1 EX1=1;//int1
24 1 IT1=1;
25 1 EX0=1;//int0
26 1 IT0=1;
27 1 LCD_Initial();
28 1 LCD_CLR(R);
29 1 put_picture_half(Bmp1,L);
30 1 Delay_x10ms(100);LCD_CLR(L);
31 1 put_picture_half(Bmp1,L);
32 1 Delay_x10ms(100);LCD_CLR(L);
33 1 put_picture_half(Bmp1,R);
34 1 for(;;)
35 1 {
36 2 button=0;
37 2 buttonflag=0;
38 2 menuflag=0;
39 2 buttonplay=0;
40 2 LCD_CLR(L);
41 2 put_menu(1,0);
42 2 put_menu(2,0);
43 2 put_menu(3,0);
44 2 wdata=0;
45 2 gamenum.mark1=0,gamenum.mark2=0,gamenum.game1=0,gamenum.game2=0;
46 2 while(!wdata)
47 2 {
48 3 while(!buttonflag);
49 3 buttonflag=0;
50 3 switch(button)
51 3 {
52 4 case DOWN:
53 4 {
54 5 put_menu(1,0);
55 5 put_menu(2,0);
C51 COMPILER V7.06 MAIN 09/23/2008 04:07:57 PAGE 2
56 5 put_menu(3,0);
57 5 if(menuflag==3) menuflag=1;
58 5 else menuflag+=1;
59 5 put_menu(menuflag,1);
60 5 break;
61 5 }
62 4
63 4 case UP:
64 4 {
65 5 put_menu(1,0);
66 5 put_menu(2,0);
67 5 put_menu(3,0);
68 5 if(menuflag<=1) menuflag=3;
69 5 else menuflag-=1;
70 5 put_menu(menuflag,1);
71 5 break;
72 5 }
73 4
74 4 case ENTER:
75 4 {
76 5 switch(menuflag)
77 5 {
78 6 case 1://singlaplay
79 6 wdata=singlaplay();
80 6 break;
81 6 case 2://doubleplay
82 6 wdata=doubleplay();
83 6 break;
84 6 case 3://setingmenu
85 6 wdata=settingmenu();
86 6 break;
87 6 default:break;
88 6 }
89 5 break;
90 5 }
91 4
92 4 case EXIT:break;
93 4 default:break;
94 4 }
95 3 }
96 2 }
97 1 }
98
99
100 /////////////////////////////////////
101 //设置难度选项
102 /////////////////////////////////////
103 uchar settingmenu()
104 {
105 1 LCD_CLR(L);
106 1 put_menu(4,0);
107 1 put_menu(5,0);
108 1 put_menu(6,0);
109 1 menuflag=0;
110 1 while(1)
111 1 {
112 2 while(!buttonflag);
113 2 buttonflag=0;
114 2 switch(button)
115 2 {
116 3 case DOWN:
117 3 {
C51 COMPILER V7.06 MAIN 09/23/2008 04:07:57 PAGE 3
118 4 put_menu(4,0);
119 4 put_menu(5,0);
120 4 put_menu(6,0);
121 4 if(menuflag==3) menuflag=1;
122 4 else menuflag+=1;
123 4 put_menu(menuflag+3,1);
124 4 break;
125 4 }
126 3 case UP:
127 3 {
128 4 put_menu(4,0);
129 4 put_menu(5,0);
130 4 put_menu(6,0);
131 4 if(menuflag<=1) menuflag=3;
132 4 else menuflag-=1;
133 4 put_menu(menuflag+3,1);
134 4 break;
135 4 }
136 3 case ENTER:
137 3 {
138 4 switch(menuflag)
139 4 {
140 5 case 1:speed=1;break;
141 5 case 2:speed=4;break;
142 5 case 3:speed=7;break;
143 5 default:break;
144 5 }
145 4 return 1;
146 4 }
147 3 case EXIT:
148 3 {
149 4 return 1;
150 4 }
151 3 default:break;
152 3 }
153 2 }
154 1 }
155
156
157
158 void int1() interrupt 2 using 3
159 {
160 1 P2=0xFF;
161 1 buttonflag=1;
162 1 button=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 09/23/2008 04:07:57 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 }
233 2 if(buttonplay)
234 2 {
235 3 buttonplay=0;
236 3 if((button==0x08)&&(i<=1)) return 0; //p2.3
237 3 else if(button==0x08||button==0x04) return 1;
238 3 }
239 2 LCD_WriteData(0x00,8-i,64+i*8-j+2);
240 2 LCD_WriteData(0x00,8-i,64+i*8-j+1);
241 2
C51 COMPILER V7.06 MAIN 09/23/2008 04:07:57 PAGE 5
242 2 }
243 1 return 1;
244 1 }
245 //=============================================
246 //斜线移动:向右上移动
247 //=============================================
248 uchar Ball_MoveRightUp(uint speed)
249 {
250 1 uchar i,j,wdata;
251 1 for(i=0;i<8;i++)
252 1 {
253 2 wdata=0xc0;
254 2 for(j=0;j<8;j+=2)
255 2 {
256 3 if(j)
257 3 {
258 4 LCD_WriteData(0x00,7-i,64+i*8+j-2);//CLR
259 4 LCD_WriteData(0x00,7-i,64+i*8+j-1);
260 4 }
261 3
262 3 LCD_WriteData(wdata,7-i,64+i*8+j);
263 3 LCD_WriteData(wdata,7-i,64+i*8+j+1);
264 3 wdata=wdata>>2;
265 3 Delay_x10ms(speed*10);
266 3 if(i==7&&j>=4) j=10;
267 3 }
268 2 if(buttonplay)
269 2 {
270 3 buttonplay=0;
271 3 if((button==0x02)&&(i>=7)) return 0; //p2.1
272 3 else if(button==0x02||button==0x01) return 2;
273 3 }
274 2 LCD_WriteData(0x00,7-i,64+i*8+j-2);
275 2 LCD_WriteData(0x00,7-i,64+i*8+j-1);
276 2
277 2 }
278 1 return 2;
279 1 }
280
281 //=============================================
282 //斜线移动:向左上移动
283 //=============================================
284 uchar Ball_MoveLeftUp(uint speed)
285 {
286 1 uchar j,wdata;
287 1 int i;
288 1 for(i=8;i>0;i--)//向左上移动
289 1 {
290 2 wdata=0xc0;
291 2 for(j=1;j<8;j+=2)
292 2 {
293 3 if(j)
294 3 {
295 4 LCD_WriteData(0x00,i-1,64+i*8-j+2);//CLR
296 4 LCD_WriteData(0x00,i-1,64+i*8-j+1);
297 4 }
298 3
299 3 LCD_WriteData(wdata,i-1,64+i*8-j);
300 3 LCD_WriteData(wdata,i-1,64+i*8-j-1);
301 3 wdata=wdata>>2;
302 3 Delay_x10ms(speed*10);
303 3 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -