📄 main.lst
字号:
C51 COMPILER V8.05a MAIN 09/09/2007 10:45:20 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE sources\main.c BROWSE INCDIR(.\include) DEBUG OBJECTEXTEND PRINT(.\main.lst
-) OBJECT(main.obj)
line level source
1 //*************************************************************************************************
2 //*************************************************************************************************
3 //**<程 序 名>:俄罗斯方块游戏 **
4 //**<版本说明>:正式版,完成俄罗斯方块基本的全部功能。 **
5 //**<仿真说明>: 本程序在Proteus7.1SP2上仿真成功,编译后内存约为14.5K,单片机可以选用at89c51RB2, **
6 //** 内存位16K,由于Proteus仿真问题,液晶竖立时会产生错误,所以汉字和数字采用的字模 **
7 //** 在实际使用时需要改正,数字显示函数也需改正,液晶驱动可能也需要随控制器的不同而 **
8 //** 做适当修改,键盘扫描可能也许根据实际情况修改,其他的函数均与硬件无关。 **
9 //**<缺 陷>:方块类型不是随机产生,记分部分过于简单,游戏规则尚且贫乏,待改进。虽经不断测试 **
10 //** 消除大量bug,但仍需改进修正,恳请您的指正和合理建议。由于本人不熟悉C高级语余, **
11 //** 法,故程序中基本没有出现高级语法,由于开始程序机构和算法设计欠考虑,故程序有冗 **
12 //** 累赘,效率低下的地方较多,请多多包涵,我对很大一部分已想出新算法。有改本程序或 **
13 //** 者想自写本游戏者,我愿意无偿提供技术支持。欢迎交流! **
14 //**<完成时间>:2007年9月5日 **
15 //**<作 者>:LastRitter **
16 //**<联系方式>:E-mail:superyongzhe@163.com;QQ:314665354。 **
17 //*************************************************************************************************
18 //*************************************************************************************************
19
20 //*************************************************************************************************
21 //* *
22 //* ******************************头文件及宏定义************************** *
23 //* *
24 //*************************************************************************************************
25 #include "includes.h"
26
27 #define TIME1H 0x3C
28 #define TIME1L 0xB0 //定时器1溢出时间:50ms
29
30 #define SCANPORT P1 //键盘接口。
31
32
33 //*************************************************************************************************
34 //* *
35 //* ******************************全局变量************************************ *
36 //* *
37 //*************************************************************************************************
38 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
39 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<防抖动标志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
40 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
41 bit b_KeyShock=0; //键盘防抖动标志位。
42 //当按键中断产生时,首先判断此位。
43 //0--执行键盘扫描及键码处理程序;1--不执行。
44
45 bit b_KillShock=0; //防抖标志清除位:0--不清除;1--清除。
46
47 unsigned char uc_KillCount=0; //抖动标志清除计数,使用定时器1。
48
49
50 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
51 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<键盘扫描开启标志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
52 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
53 bit b_KeyScan=0; //0--不扫描;
54 //1--扫描。
C51 COMPILER V8.05a MAIN 09/09/2007 10:45:20 PAGE 2
55
56 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
57 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<方块定时下降>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
58 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
59 bit b_BlockDown=0; //0-关闭定时器定时下降置位;1-开启定时器定时下降置位。
60 bit b_DownStart=0; //0-关闭下降置位;1-开启下降置位。
61 unsigned char uc_DownCount=0; //定时器定时计数。
62
63 //*************************************************************************************************
64 //* *
65 //* ********************************主函数****************************** *
66 //* *
67 //*************************************************************************************************
68 void main(void)
69 {
70 1 SCANPORT=0x0F; //初始化键盘。
71 1 vLCDInitialize(); //初始化LCD。
72 1 vGameInitialize(); //初始化游戏。
73 1
74 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<外部中断0,用于开启键盘扫描及键码处理标志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
75 1 IT0=1; // 中断方式:下降沿。
76 1 EX0=1; // 开启外部中断。
77 1
78 1
79 1 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定时器1,用于防抖动标志清除 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
80 1 TH1=TIME1H;
81 1 TL1=TIME1L;
82 1 TR1=1; //开启定时器1
83 1 ET1=1; //开定时器1中断
84 1
85 1 EA=1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -