?? 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 + -