📄 main.lst
字号:
C51 COMPILER V8.05a MAIN 11/13/2007 09:15:27 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\Target\main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE sources\main.c BROWSE INCDIR(.\include) DEBUG OBJECTEXTEND PRINT(.\LST\main
-.lst) OBJECT(.\Target\main.obj)
line level source
1 //*************************************************************************************************
2 //*************************************************************************************************
3 //**<程 序 名>:俄罗斯方块游戏 **
4 //**<版本说明>:改进版v3.0,增强了积分功能,最多可以显示8位,增加了游戏时间功能,增加了方块预览,**
5 //** 增设了游戏级别的框架,计划增加过关功能,另外还丰富了开机画面,优化了部分函数。 **
6 //**<完成时间>:2007年11月10日 **
7 //**<作 者>:LastRitter **
8 //**<联系方式>:E-mail:superyongzhe@163.com;QQ:314665354。 **
9 //*************************************************************************************************
10 //*************************************************************************************************
11
12 //*************************************************************************************************
13 //* *
14 //* ******************************头文件及宏定义************************** *
15 //* *
16 //*************************************************************************************************
17 #include "includes.h"
18
19
20 #define TIME1H 0x3C
21 #define TIME1L 0xB0 //定时器1溢出时间:50ms
22
23 #define SCANPORT P1
24
25 bit b_BlockDown=0; //方块定时下降标志位。
26
27 unsigned char uc_KeyCode=0; //键盘扫描输入暂存。
28
29 bit b_TimeAdd=0;
30
31 //*************************************************************************************************
32 //* *
33 //* ********************************主函数****************************** *
34 //* *
35 //*************************************************************************************************
36 void main(void)
37 {
38 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定时器1,用于方块定时下降 >>>>>>>>>>>>>>>>>>>>>>>>>
39 1 TH1=TIME1H;
40 1 TL1=TIME1L;
41 1 TR1=1; //开启定时器1
42 1 ET1=1; //开定时器1中断
43 1
44 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<外部中断0,用于开启键盘扫描处理标志>>>>>>>>>>>>>>>>>>>>>>>>>>>
45 1 IT0=1; // 中断方式:下降沿。
46 1 EX0=1; // 开启外部中断。
47 1 EA=1;
48 1
49 1 vLCDInitialize(); //LCD初始化。
50 1
51 1 SCANPORT=0x0F; //按键端口初始化。
52 1
53 1 vStartPicture(PIC_INITIALIZE);
54 1 while(1)
C51 COMPILER V8.05a MAIN 11/13/2007 09:15:27 PAGE 2
55 1 {
56 2 if(uc_KeyCode!=0) //如果有按键按下,则进行按键扫描和键码处理。
57 2 {
58 3 vKeyProcess(uc_KeyCode);
59 3 uc_KeyCode=0;
60 3 }
61 2 if(b_BlockDown) //方块定时下降。
62 2 {
63 3 b_BlockDown=0;
64 3 vBlockAction(ACTIONDOWN);
65 3 }
66 2 if(b_TimeAdd)
67 2 {
68 3 b_TimeAdd=0;
69 3 vTimeAdd();
70 3 }
71 2 if(uc_StartPicture==PIC_CONTINUE)
72 2 {
73 3 uc_StartPicture=PIC_PAUSE;
74 3 if(!b_GameStart)
75 3 vStartPicture(PIC_CONTINUE);
76 3 }
77 2 }
78 1 }
79
80
81
82 //*************************************************************************************************
83 //* *
84 //* ******************************外部中断0,用于开启键盘扫描及键码处理****************** *
85 //* *
86 //*************************************************************************************************
87 void vINT0(void) interrupt 0
88 {
89 1 unsigned char ucCount;
90 1
91 1 EX0=0;
92 1 for(ucCount=0;ucCount<10;ucCount++);
93 1 if(SCANPORT!=0x0F)
94 1 uc_KeyCode=SCANPORT&0x0F; //开启键盘扫描标志。
95 1 EX0=1;
96 1 }
97
98 //*************************************************************************************************
99 //* *
100 //* **************************定时器1中断,用于方块定时下降************************ *
101 //* *
102 //*************************************************************************************************
103 void vTimer1(void) interrupt 3
104 {
105 1 static unsigned char sucDownCount=0,sucTimeCount=0,sucStPicCount=0;
106 1
107 1 if(b_GameStart)
108 1 {
109 2 if(sucDownCount>uc_GameSpeed)
110 2 {
111 3 sucDownCount=0;
112 3 b_BlockDown=1;
113 3 }
114 2 else
115 2 sucDownCount++;
116 2
C51 COMPILER V8.05a MAIN 11/13/2007 09:15:27 PAGE 3
117 2 if(sucTimeCount==200)
118 2 {
119 3 sucTimeCount=0;
120 3 b_TimeAdd=1;
121 3 }
122 2 else
123 2 sucTimeCount++;
124 2 }
125 1 else
126 1 {
127 2 if(uc_StartPicture!=PIC_STOP)
128 2 {
129 3 if(sucStPicCount==40)
130 3 {
131 4 uc_StartPicture=PIC_CONTINUE;
132 4 sucStPicCount=0;
133 4 }
134 3 else
135 3 sucStPicCount++;
136 3 }
137 2 }
138 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<恢复定时器1溢出时间>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
139 1 TH1=TIME1H;
140 1 TL1=TIME1L;
141 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 183 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 ----
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -