📄 main.c
字号:
//*************************************************************************************************
//*************************************************************************************************
//**<程 序 名>:俄罗斯方块游戏 **
//**<版本说明>:改进版v2.0,增加了游戏开始和结束提示,从而解决了方块不能随机产生的问题。 **
//**<完成时间>:2007年11月6日 **
//**<作 者>:LastRitter **
//**<联系方式>:E-mail:superyongzhe@163.com;QQ:314665354。 **
//*************************************************************************************************
//*************************************************************************************************
//*************************************************************************************************
//* *
//* ******************************头文件及宏定义************************** *
//* *
//*************************************************************************************************
#include "includes.h"
#define TIME1H 0x3C
#define TIME1L 0xB0 //定时器1溢出时间:50ms
#define SCANPORT P1
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<键盘扫描开启标志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
unsigned char uc_KeyCode=0;
bit b_BlockDown=0;
//*************************************************************************************************
//* *
//* ********************************主函数****************************** *
//* *
//*************************************************************************************************
void main(void)
{
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定时器1,用于方块定时下降 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
TH1=TIME1H;
TL1=TIME1L;
TR1=1; //开启定时器1
ET1=1; //开定时器1中断
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<外部中断0,用于开启键盘扫描及键码处理标志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
IT0=1; // 中断方式:下降沿。
EX0=1; // 开启外部中断。
EA=1;
vLCDInitialize();
SCANPORT=0x0F;
vShowGraph(3,40,60,2,uca_GameStart);
while(1)
{
if(uc_KeyCode!=0) //如果有按键按下,则进行按键扫描和键码处理。
{
vKeyProcess(uc_KeyCode);
uc_KeyCode=0;
}
if(b_BlockDown) //方块定时下降。
{
b_BlockDown=0;
vBlockAction(ACTIONDOWN);
}
}
}
//*************************************************************************************************
//* *
//* ******************************外部中断0,用于开启键盘扫描及键码处理****************** *
//* *
//*************************************************************************************************
void vINT0(void) interrupt 0
{
unsigned char ucCount;
EX0=0;
for(ucCount=0;ucCount<10;ucCount++);
if(SCANPORT!=0x0F)
uc_KeyCode=SCANPORT&0x0F; //开启键盘扫描标志。
EX0=1;
}
//*************************************************************************************************
//* *
//* **************************定时器1中断,用于方块定时下降************************ *
//* *
//*************************************************************************************************
void vTimer1(void) interrupt 3
{
static unsigned char ucsDownCount=0;
if(b_GameStart)
{
if(ucsDownCount==100)
{
ucsDownCount=0;
b_BlockDown=1;
}
else
ucsDownCount++;
}
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<恢复定时器1溢出时间>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
TH1=TIME1H;
TL1=TIME1L;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -