汇编俄罗斯方块8.8点阵
俄罗斯方块设计
本科课程设计题目:基于单片机的8*8LED 俄罗斯方块设计姓名孙俊学号2008130346院(系)物理与信息科学学院电子系专业、年级电子信息科学与技术2008级指导教师刘美容二○一一年十月基于单片机的8x8 俄罗斯方块设计一、设计任务《俄罗斯方块》是一款世人皆知,看似简单实则变化无穷的小游戏。
本次设计以51单片机为基础,设计一款功能简单的8*8点阵俄罗斯方块游戏,我们将以汇编语言编程实现以下操作:图形的显示合成,通过按键控制图形的移动和旋转,满格消行,手动复位等。
本次设计俄罗斯方块功能简单,用单片机的最小系统就能得以实现。
而单片机的最小系统设计中实际上最重要的就是对键盘/显示器接口电路的设计,由于系统功能不同所以要求就不同,接口设计也就不同。
对一个键盘/显示器接口设计应从整个系统出发,综合考虑软、硬件特点。
其中,硬件设计包括初始的设计原理和原理图介绍,到最终的电路图实际焊接以及布局,软件设计我们会给出具体的设计方案,比如图形的显示合成,通过按键控制图形的移动和旋转,满格消行等的设计流程图,以及具体的汇编程序。
二、设计方案本次设计初期是在keil和proteus联合仿真中进行,编程语言为51汇编语言,后期是进行实物焊接。
本次我们采用单片机STC89C52控制模块提供电源,以点阵式LED 显示,采用独立按键,直接在I/O口线上接上按键开关。
因为设计时精简和优化了电路,所以剩余的口资源还比较多,我们使用四个按键,分别是旋转键,下键,左键,右键。
这种方案实现可行,既满足系统功能要求,又减少了系统实现的复杂度。
而由于STC89C52是一种带8K 字节闪烁可编程可檫除只读存储器的低电压,高性能COMOS8的微处理器,该器件采用ATMEL 搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
89C52内置8位中央处理单元、256字节内部数据存储器RAM 、8k 片内程序存储器(ROM )32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。
俄罗斯方块游戏设计原理
俄罗斯方块游戏是VHDL 应用于复杂数字系统的一个经典设计,本章将详细介绍该游戏的设计原理和设计方法。
其中包括系统构成、系统设计原理和系统各个模块的实现方法。
8.1 系统结构原理8.1.1 系统端口图8.1给出了系统的顶层设计符号,其端口包括:1)kc :PS/2键盘时钟输入; 2)kd :PS/2键盘数据输入; 3)mclk :系统主时钟输入;4)blue :蓝色信号输出到VGA 显示器接口; 5)grn :绿色信号输出到VGA 显示器接口; 6)red :红色信号输出到VGA 显示器接口; 7)hs :行扫描信号到VGA 显示器接口;8)vs :列扫描信号到VGA 显示器接口要开始一个游戏按F2键,但是当游戏正在运行时,不允许按键F2,如果要开始一个新的游戏必须停止它或者按键F1。
该游戏有5个不同的目标,可以对它进行旋转和左移或右移。
该游戏有4种不同的速度,当分数增加的时候,速度也随之增加,按键S 将增加速度,直到目标到达最底部。
速度和分数的关系是: 1)当分数<100,速度等级为1;2)当分数在(100,200)之间时,速度等级为2; 3)当分数在(200,300)之间时,速度等级为3; 4)当分数在>300时,速度等级为4;如图8.2所示,有两种不同的目标:右边是文本框,左边是俄罗斯方块。
使用两个BRAM 存储数据。
文本框中包含了32x16=512个字符,每个字符包含8比特,所以需要使用BRAM 。
在俄罗斯方块部分也使用了一个BRAM ,但其实这不是必须的,因为这增加了gamecontrol 模块的设计复杂度(只能在一个时钟周期访问一个BRAM )。
俄罗斯方块有10x20个块组成,每个块保存了4位(第1位用于说明是否有其它东西,其它3位保持着颜色)。
在屏幕上画像素需要25MHz 时钟,在设计中使用3线来传送颜色。
这也就是说,只能画出8种颜色(红,绿,蓝,黄,黑,白,浅绿和紫红)。
mixly菜鸟教学(6)俄罗斯方块
例题一:调用函数
我们把方块定义为函数 之后,如果需要再使用它, 需要“调用函数”。
折叠块
如果我们确定好了函数 之后折叠起来,不占用界面。
如果还需要回来修改, 再展开即可。
实例演示
循环
这样方块亮0.8秒,灭 0.2秒后,程序自动循环然后 变量y加1就实现了移动。
课堂作业一
编辑一个自动降落的长条,并使颜色 为天蓝色。
想要真正完成一段俄罗 斯方块游戏的程序还有很长 一段路要走。
万丈高楼平地起,我们 一步一个脚印慢慢畅游在编 程的海洋中。
谢谢观看
பைடு நூலகம்
当我们按下5号时,变量 方向数值加1,当方向为1-4 时,每个方向都对应一个不 同方向的图形。
dark在英文中是黑暗的 意思,这个函数中我们让周 围的灯灭掉。
实例演示
课堂作业二
使用已学编程知识,做一个r i g h t s n a k e 自动降落并可以按键翻转的程 序。
例题三:左右移动
在例题三的程序上再增 加一个3号按键和4号按键左 右移动的程序就可以自由的 左右移动了。
俄罗斯方块
俄罗斯方块是经典的游 戏,今天我们就使用点阵编 写一个简易的俄罗斯方块。
函数
像这样一个矩形的方块, 我们想让它在点阵上自动移 动,应该怎么做呢?
函数
因为要经常使用这样的 方块,且要使它移动,我们 就把这样一个图形整体设为 一个函数,并命名为方块。
如果我们要使这个方块 移动的话只需要改变变量x和 变量y。
七种模块
俄罗斯方块最基础的模 块有这四种,我们需要一一 把它们列为函数。
七种模块
long
left gun right gun square
right snake Sudden
单片机 8X8点阵显示
目录1 需求分析 (2)1.1前言 (2)1.2课题设计内容 (2)1.3设计目的 (2)2 总体设计 (3)2.1设计思路 (3)2.2方案设计 (3)3 详细设计 (5)3.1硬件系统电路设计 (5)3.1.1控制电路设计 (5)3.1.2主要功能特性: (6)3.2控制系统的软件设计 (7)3.2.1 主程序 (7)3.2.2初始化程序 (7)3.2.3显示程序 (8)3.2.4程序设计清单 (8)4 实现 (9)4.1元器件的选择 (9)4.2元器件焊接 (9)4.2.1焊接准备 (9)4.2.2焊接过程 (9)4.3软件的调试和烧入 (11)5 使用说明 (12)5.1各部分组成及功能 (12)5.1.1 LED显示屏 (12)5.1.2以单片机为核心的动态扫描电路 (12)5.2显示时间的分析 (13)6 实验小结 (14)7 收获体会 (15)附录一 (16)附录二 (16)附录三 (17)1 需求分析1.1前言当今世界,电子技术迅猛发展,点阵式显示器件作为现代信息显示的重要媒体,在金融证券、体育、机场、交通、商业、广告宣传、邮电电信、指挥调度、国防军事等许多领域中得到了广泛应用。
因此点阵式显示器件的研制、生产也的到了迅速的发展,并逐步形成产业,成为光电子行业的新兴产业领域。
由于LED电子显示屏具有所显内容信息量大,外形美观大方,操作使用方便灵活.适用于火车,汽车站,码头,金融证券市场,文化中心,信息中心体育设施等公共场所。
该项目广泛涉及了计算机及电子技术中的电源技术、单片机技术、数据通讯技术、显示技术、存储技术、系统软件技术、接口及驱动等技术。
LED显示又可以分为单色显示和双色显示,可以按照需要的大小、形状和颜色进行组合,并用单片机控制实现各种文字或图形的变化,达到宣传和提示的目的。
1.2课题设计内容该电路系统是采用AT89C2051单片机为控制器,控制点阵LED显示器进行显示,本电路控制模块有主模块和显示模块组成。
简易俄罗斯方块游戏机
简易俄罗斯方块游戏机实验名称简易俄罗斯方块游戏机姓名AugJ班级信息与通信工程学院09级14班学号辅导老师张咏梅日期2011年10月18日一、设计课题的任务要求1、基本内容用一个8*8点阵做为基本显示屏,一个发光点表示一个图形,完成俄罗斯方块游戏的基本功能:下落、左右移动、消行和显示得分情况,当某一列到顶时游戏结束。
(1)在游戏开始前,请设置一个点阵像素的扫描环节,显示方式自选,以判断点阵的好坏。
(2)游戏结束时,得分保持,按“开始”键游戏重新开始。
2、提高要求(1)选作:用一个8*8点阵做为基本显示屏,用多个亮点组成各种形状的“方块”,实现俄罗斯方块游戏机的基本功能。
(2)自拟其他功能二、系统设计设计思路:由于实验中用到了64个点来完成显示功能,所以可以选用一个64位的向量STATUS(0 TO 63)来存储各点状态,再用两个整型数分别控制当前点的行列坐标,但是若采用该种控制方式会涉及到乘法运算,因此改为8个8位向量STAN (0 TO 7),每个向量代表一列点阵,这样做不仅使控制简单,而且在扫描显示的时候很方便,代码也很简洁。
设计包括2个大的元件,一个是RUSSIA,其功能是存储状态,分频,完成左右下移动以及计分等功能;另一个是RUSSIA_SCAN,主要完成点阵扫描和数码管译码。
具体设计是这样的:8个向量STA0,STA1,STA2,STA3,STA4,STA5,STA6,STA7记录游戏状态,点的坐标由COL 和ROW来控制。
设置两个指针FLAG和ROWCLEAR,如果八列中有一列都为1,表示游戏结束了,置FLAG为1,程序进入NULL并蜂鸣器发声;当最后一行全部为1时,置ROWCLEAR=1,当ROWCLEAR=1时,表示要消行,加分,并且将上一行的值赋到下一行。
游戏继续,如按下左键或右键,程序更根据下一状态决定是否左移或右移。
(BTN5为复位RESET,BTN7为左,BTN6为右,BTN5为扫描)若无键按下,则根据情况当前点是否需要自动下移。
C语言的俄罗斯方块
int move(int dir);
/*左右移动下落盒子,dir指出向左还是向右,这个与drop
是一样的*/
int test(int mx, int my, int box[5][5]);
/*这个比较重点,判断box在mx,my为坐标上,与地图上的
非空点阵是否有重叠.很通用的一个函数*/
int rotate();
/*旋转下落的盒子,当然如果转了之后与地图有冲突,会
取消转动,返回0,但返回的值好像没什么用~*/
#define MAX_C 7 /*最大种类,这个无须解释*/
#define KEY_UP 'w' /*定义上下左右按按键*/
#define KEY_DOWN 's'
#define KEY_LEFT 'a'
#define KEY_RIGHT 'd'
}
将会定时(1个单位)在屏幕上打印Active!
一般来说testTimer必须放在循环中反复执行,激活时返回1
*/
void render(void); /*唯一的绘图函数*/
/*注意,此函数重画整个地图,根据地图中的点阵,以及根据
void rotateBox(int box1[5][5], int box2[5][5]);
/*核心函数成员,把box1逆时针旋转90度,并保存到box2中*/
void rebuidNext();
/*核心函数成员,生成下一个方块*/
int drop();
*main函数在程序的最后,你可以在这里看到整个游戏的组织架构
8-8点阵显示程序(汇编)
8*8点阵显示程序(汇编)//8*8 点阵LED 显示,用单片机AT89C51 驱动8*8 点阵LED 显示屏//轮流显示0-9 的数字,显示的方式采用自右向左拉幕式显示//源程序和proteus 仿真我一打包,地址:proteus.5d6d/thread-9031-1-1.htmlR_CNTEQU31HNUMBEQU32HTCOUNTEQU33H ORG0000H LJMPSTART ORG0BH ;定时器中断入口地址LJMPINT_T0 ORG0030HSTART:MOVR0,#00H ;显示的幕次(即每一幕显示的:行码起始序号)值0MOVR_CNT,#00H;列码序列号置0MOVTCOUNT,#00H ;行码序列号置0 MOVTMOD,#01H MOVTH0,#(65536-5000)/256 MOVTL0,#(65536-5000)MOD 256SETB TR0 MOVIE,#82HSJMP$//定时器中断处理函数INT_T0:MOVTH0,#(65536-5000)/256MOVTL0,#(65536-5000)MOD 256 MOVDPTR,#TAB ;取列码表首地址MOVA,R_CNTMOVCA,@A+DPTR MOVP3,AMOVDPTR,#NUB ;取行码表首地址MOVA,NUMB MOVCA,@A+DPTR MOVP0,A ;输出行号INCNUMBNEXT1: INCR_CNT MOVA,R_CNT CJNEA,#8,NEXT2 MOVR_CNT,#0 MOVNUMB,R0NEXT2: INCTCOUNT MOVA,TCOUNT CJNEA,#40,NEXT4 ;每个数字显示200msMOVTCOUNT,#00H INC R0 ;上一幕显示行码的起始序列号+1 CJNER0,#88,NEXT3MOVR0,#00HNEXT3:MOVNUMB,R0 ;送新一幕显示行码的起始序列号NEXT4:RETITAB: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FH;列值NUB: DB 00H,00H,00H,00H,00H,00H,00H,00H;空DB00H,00H,3EH,41H,41H,41H,3EH,00H;0 DB00H,00H,00H,00H,21H,7FH,01H,00H;1 DB。
C语言程序设计课程大型作业答辩
设置鼠标的移动范围
SetMouseArea(int x0,int y0,int x1,int y1) { union REGS regs;
regs.x.ax=7;regs.x.cx=x0;regs.x.dx=x1; int86(0x33,®s;®s); regs.x.ax=8;regs.x.cx=y0;regs.x.dx=y1; int86(0x33,®s,®s); }
鼠标简介
鼠标系统实际上由两个主要元素组成: 鼠标机制和称作鼠标驱动程序的内存驻 留程序。鼠标驱动程序提供与鼠标通信 所需的全部低级支持。此外,它自动维 持鼠标光标位置和发现是否按下了某个 键。一旦装入驱动程序,鼠标就可以被 随后执行的任意程序使用。
鼠标简介续
可以通过PC中断33H访问鼠标和鼠标驱 动程序的各种功能。所选择的特定函数 依赖于中断时AX寄存器的值。三个其它 寄存器(BX、CX和DX)用于把各种参数 传送给鼠标例程。同样,鼠标函数使用 这四个寄存器把鼠标的位置和按钮的状 态返回给调用函数。
取得字节某一位的值
int getbit(unsigned char byte,int bit) { if(bit<0||bit>7)
return 0; return (byte>>bit)&0x1; } 函 数 getbit 用 于 得 出 一 个 字 节 中 每 个 位 (bit)是0还是1。
显示24点阵的汉字
• 提交开发文档,说明程序的主要模块及功能、 主要数据结构及意义、程序采用的核心算法及 实现方式、小组成员的分工及完成情况
C语言高级实验班小组登记表格 小组名称
单片机8x8点阵汇编程序
ONE: MOV R2,#0 ;取字指针
DOT: MOV P1,#0FFH ;关显示
MOV A,R2 ;
MOVC A,@A+DPTR ;取当前列的显示字码的一个字节
MOV P2,A ;送1~8行控制口
INC R2
MOV A,R1
MOV P1,A ;送列控制码
ACALL DELAY ;显示5MS
RL A ;列控制码左移,显示下一列
MOV R1,A
DJNZ R3,DOT ;未显示8列,继续
MOV R3,#8
DJNZ R5,ONE ;未显示10次,继续
INC DPL ;一屏反复显示10次完,字码表初值加1
DJNZ R4,NEXT; 144列未移动完,继续
LJMP START ; 144列显示完,返回,重新从“ ”开始显示
8x8点阵8x8点阵屏单片机点阵单片机汇编单片机汇编指令单片机汇编语言单片机汇编实例单片机汇编语言教程单片机汇编视频教程单片机汇编教程
单片机8x8点阵汇编程序
浏览次数:659次悬赏分:20|解决时间:2010-1-16 23:16|提问者:chanwu2000
请问各位高手怎样将下面两个汇编程序合成一个,程序如下:
ORG 0000HLJMP MINORG 0030H
MAIN: MOV DPTR,#TAB ;字码表初址赋值
MOV R1,#0FEH ;列控制码
MOV R3,#8 ;列数
MOV R4,#144 ;移动“ ”及“08106098”及“ ”及“08106112”18个字符,共144列
NEXT: MOV R5,#10 ;每屏反复显示10次
俄罗斯方块详解
QQ: 120173389
Mail:tlp.totop@ 空间 /tlptotop单片机 俄罗斯方块 详解
-2-
就像这个 U 字形的容器装满了无法消行的方块,即生成新的方块失败,则游戏结束。流程 图如下:
主程序流程图
开始 执行初始化 产生一个新方块 不成功 上 旋转 游戏结束 下 向下 移动 成功 检测按键 左 向左 移动 右 向右 移动 超时 向下 移动
QQ: 120173389
Mail:tlp.totop@ 空间 /tlptotop单片机 俄罗斯方块 详解
-5{ 0xff,0xff,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10, 0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10, 0x80,0x10, };
点阵 16*16 显示缓冲区共需 32 字节(BYTE) ,而数组 map 却有 34 字节(BYTE) ,那是因为 有 2 个字节(BYTE)0xff,用作游戏地图的下界,消行的时候此行也不消行。我们把这段代码 也保存到 block.h 文件中。缓冲区数据与点阵的对应关系渐下图:
方块的属性有方块的类型(type 7 种) 、状态(state 4 种) 、对应的图形区(*pPic) 、位 置坐标(x,y) ,所以我们定义一个结构体类型,包含这几个成员。并且定义 2 个结构体变 量,分别表示当前方块 this 和下个方块 next。代码如下:
/***************************************************** 定义结构体类型 *****************************************************/ typedef struct { uchar type;//方块的类型(LJITOSZ) uchar state;//方块的状态(0、90、180、270°旋转) uchar code *pPic;//对应图形区指针 uchar x,y;//方块的坐标
汇编俄罗斯方块8.8点阵
程序功能:最原始简单版俄罗斯方块;硬件连接:接双色点阵;晶振型号:12M;单片机:STC89C52;编写时间:;编程人:HANG BIT ;点阵行输入HW BITHZ BITLIE BIT ;点阵列输入LW BITLZ BITWEI BITDUAN BITXIAN EQU P1BiaoX BITBiao_z BIT ;按键是否按下标志Biao_y BITBiao_x BITDou_z BIT ;按键相应标志位Ying_z BITDou_y BITYing_y BITDou_x BITYing_x BITBiao_ZY BITBiao_zt BIT ;开始、暂停标志KEY_z BIT ;左、右、旋转按键KEY_y BITKEY_x BITORG 0000HAJMP StartORG 0003HAJMP Int0_serORG 000BHAJMP T0_serORG 0030H;*************************Start:MOV R0,#08HMOV R1,#51HMOV R3,#03HMOV R4,#08H// MOV 46H,#99MOV 40H,#03HMOV 30H,#0FEHMOV 33H,#0FEHMOV 37H,#80HMOV TMOD,#01HMOV TH0,#(65536-10000) / 256MOV TL0,#(65536-10000) MOD 256SETB EASETB EX0SETB ET0SETB IT0SETB TR0;*****************************Main:CALL Zhanting ;暂停响应CALL Xianshi ;点阵显示CALL CMkey_z ;左移按键CALL CMkey_y ;右移按键CALL CMkey_x ;旋转按键CALL Panduan_z ;判断是否可以左移CALL Panduan_y ;判断是否可以右移CALL Panduan_x ;判断是否可以旋转CALL Panduan_xia ;判断是否可以下移CALL Panduan_xh ;判断消行CALL Saomiao_xh ;扫描消行CALL Jifen ;计算分值CALL JifenXianshi ;分值显示ORL PCON,#01HAJMP Main;*****************************Zhanting:JB Biao_zt,Out_zt ;判断是否暂停Zhanti:MOV A,37H ;显示STARTRLC AMOV 37H,AMOV LIE,CCLR LWSETB LWDJNZ R0,ZhantiMOV R0,#08HCLR LZSETB LZMOV A,37HRLC ARR AMOV 37H,AZhan:SETB HANGCLR HWSETB HWDJNZ R0,ZhanMOV R0,#08HMOV A,38HINC 38HMOV DPTR,#TABZMOVC A,@A+DPTRMOV 39H,A Zhant:MOV A,39HRLC AMOV 39H,AMOV HANG,CCLR HWSETB HWDJNZ R0,ZhantMOV R0,#08HCLR HZSETB HZCALL DelayCALL Delay Qing:SETB HANGCLR HWSETB HWDJNZ R0,QingMOV R0,#08H Qing1:SETB HANGCLR HWSETB HWDJNZ R0,Qing1MOV R0,#08HCLR HZSETB HZDJNZ R4,ZhantiMOV R4,#08HCLR CYMOV A,38HSUBB A,#08HMOV 38H,A// MOV 38H,#00HMOV A,44HMOV 34H,#00HCJNE A,#10,ZhantingINC 38HMOV 44H,#00HMOV A,38HCJNE A,#31,ZhantingMOV 38H,#00HAJMP ZhantingOut_zt:RET;*****************************Xianshi: ;移动积木显示SETB HANGCLR HWSETB HWDJNZ R0,XianshiMOV R0,#08HLoop:MOV A,30HRLC AMOV 30H,AMOV HANG,CCLR HWSETB HWDJNZ R0,LoopMOV R0,#08HCLR HZSETB HZMOV A,30HRLC ARL AMOV 30H,ACALL XingzMOV A,31HINC 31HMOVC A,@A+DPTRMOV 32H,ACALL HengyiLoop1:MOV A,32HRLC AMOV 32H,AMOV LIE,CCLR LWSETB LWDJNZ R0,Loop1MOV R0,#08HCLR LZSETB LZCALL DelayCALL QingpingBeijing: ;背景显示SETB HANGCLR HWSETB HWDJNZ R0,BeijingMOV R0,#08HLoop3:MOV A,33HRLC AMOV 33H,AMOV HANG,CCLR HWSETB HWDJNZ R0,Loop3MOV R0,#08HCLR HZSETB HZMOV A,33HRLC ARL AMOV 33H,AMOV A,@R1MOV 50H,ALoop2:MOV A,50HRLC AMOV 50H,AMOV LIE,CCLR LWSETB LWDJNZ R0,Loop2MOV R0,#08HINC R1CLR LZSETB LZCALL DelayCALL QingpingCJNE R1,#59H,Xianshi0MOV R1,#51HMOV 31H,#00HRETXianshi0:AJMP Xianshi;************ 确认显示形状Xingz:MOV A,40HCJNE A,#0,S1MOV DPTR,#TAB0RETS1: CJNE A,#1,S2CALL Xuanz1RETS2: CJNE A,#2,S3CALL Xuanz2RETS3: CJNE A,#3,S4CALL Xuanz3RETS4: CJNE A,#4,S5CALL Xuanz4RETS5: CJNE A,#5,S6CALL Xuanz5RETS6: CALL Xuanz6RETXuanz1:MOV A,41HCJNE A,#0,Xu1MOV DPTR,#TAB1RETXu1:CJNE A,#2,Zhuan1 MOV DPTR,#TAB1RETZhuan1:MOV DPTR,#TAB1_1RETXuanz2:MOV A,41HCJNE A,#0,Zhuan2_1MOV DPTR,#TAB2RETZhuan2_1:CJNE A,#1,Zhuan2_2MOV DPTR,#TAB2_1RETZhuan2_2:CJNE A,#2,Zhuan2_3MOV DPTR,#TAB2_2RETZhuan2_3:MOV DPTR,#TAB2_3RETXuanz3:MOV A,41HCJNE A,#0,Zhuan3_1MOV DPTR,#TAB3RETZhuan3_1:CJNE A,#1,Zhuan3_2MOV DPTR,#TAB3_1RETZhuan3_2:CJNE A,#2,Zhuan3_3MOV DPTR,#TAB3_2RETZhuan3_3:MOV DPTR,#TAB3_3RETXuanz4:MOV A,41HCJNE A,#0,Zhuan4_1MOV DPTR,#TAB4RETZhuan4_1:CJNE A,#1,Zhuan4_2MOV DPTR,#TAB4_1RETZhuan4_2:CJNE A,#2,Zhuan4_3MOV DPTR,#TAB4_2RETZhuan4_3:MOV DPTR,#TAB4_3RETXuanz5:MOV A,41HCJNE A,#0,Zhuan5_1MOV DPTR,#TAB5RETZhuan5_1:CJNE A,#2,Zhuan5_2MOV DPTR,#TAB5RETZhuan5_2:MOV DPTR,#TAB5_1RETXuanz6:MOV A,41HCJNE A,#0,Zhuan6_1MOV DPTR,#TAB6RETZhuan6_1:CJNE A,#2,Zhuan6_2MOV DPTR,#TAB6RETZhuan6_2:MOV DPTR,#TAB6_1RET;************ 确认左右移动Hengyi:CJNE R3,#03H,H1RETH1: MOV A,32HRL ACJNE R3,#02H,H2AJMP OUT1H2: RL ACJNE R3,#01H,H3AJMP OUT1H3: RL ACJNE R3,#00H,H4AJMP OUT1H4: MOV A,32HRR ACJNE R3,#04H,H5AJMP OUT1H5: RR ACJNE R3,#05H,H6AJMP OUT1H6: RR ACJNE R3,#06H,H7AJMP OUT1H7: RR AOUT1:MOV 32H,ARET;***************************** 左移按键CMkey_z:JB KEY_z,Loopz0JB Dou_z,Loopz2SETB Dou_zRETLoopz2:INC 42HJB Ying_z,OutzSETB Ying_zSETB Biao_zRETLoopz0:CLR Dou_zCLR Ying_zOutz:RET;***************************** 右移按键CMkey_y:JB KEY_y,Loopy0JB Dou_y,Loopy2SETB Dou_yRETLoopy2:INC 42HJB Ying_y,OutySETB Ying_ySETB Biao_yRETLoopy0:CLR Dou_yCLR Ying_yOuty:RET;***************************** 旋转按键CMkey_x:JB KEY_x,Loopx0JB Dou_x,Loopx2SETB Dou_xRETLoopx2:INC 42HJB Ying_x,OutxSETB Ying_xSETB Biao_xRETLoopx0:CLR Dou_xCLR Ying_xOutx:RET;***************************** 左移防冲突Panduan_z:JBC Biao_z,ZuoyiRETZuoyi:SETB Biao_ZYCALL HangyiMOV A,36HJB ,YesZuoCALL HangerMOV A,36HJB ,YesZuoCALL HangsanMOV A,36HJB ,YesZuo ;已到边上,不用移动MOV 45H,R3DEC R3MOV A,35HCJNE A,#0,Zuo_0 ;防移动冲突背景AJMP YesZuoZuo_0:CJNE A,#1,Zuo_1AJMP YesZuoZuo_1:CJNE A,#2,Zuo_2CALL Xuan_1AJMP YesZuoZuo_2:CJNE A,#3,Zuo_3CALL Xuan_2AJMP YesZuoZuo_3:CJNE A,#4,Zuo_4CALL Xuan_3AJMP YesZuoZuo_4:CJNE A,#5,Zuo_5CALL Xuan_4AJMP YesZuoZuo_5:CALL Xuan_5YesZuo:RET;***************************** 右移防冲突Panduan_y:JBC Biao_y,YouyiRETYouyi:SETB Biao_ZYCALL HangyiMOV A,36HJB ,YesyouCALL HangerMOV A,36HJB ,YesyouCALL HangsiMOV A,36HJB ,Yesyou ;已到边上MOV 45H,R3INC R3MOV A,35HCJNE A,#0,You_0 ;防右移冲突背景AJMP YesyouYou_0:CJNE A,#1,You_1AJMP YesyouYou_1:CJNE A,#2,You_2CALL Xuan_1AJMP YesyouYou_2:CJNE A,#3,You_3CALL Xuan_2AJMP YesyouYou_3:CJNE A,#4,You_4CALL Xuan_3AJMP YesyouYou_4:CJNE A,#5,You_5CALL Xuan_4AJMP YesyouYou_5:CALL Xuan_5Yesyou:RET;***************************** 旋转防冲突Panduan_x:JBC Biao_x,XuanzhuanRETXuanzhuan: ;方形不用旋转MOV A,40HCJNE A,#0,BieRETBie:MOV A,35HCJNE A,#0,PanyiRETPanyi:MOV 43H,41HINC 41HMOV A,40HCJNE A,#1,NoyiMOV A,35HCJNE A,#1,XuanyiMOV 41H,43HRETXuanyi:MOV A,41H ;一字型防出边界CJNE A,#1,Yi_1AJMP Yi_hYi_1:CJNE A,#3,Yi_sAJMP Yi_hYi_s: ;一字型防冲突背景CALL HangyiMOV A,36HANL A,#83HCJNE A,#0,NoxuanYi_h:MOV A,35HCJNE A,#2,Yi_h2CALL Xuan_1CALL YesxuanRETYi_h2:MOV A,35HCJNE A,#3,Yi_h3CALL Xuan_2CALL YesxuanRETYi_h3:MOV A,35HCJNE A,#4,Yi_h4CALL Xuan_3CALL YesxuanRETYi_h4:MOV A,35HCJNE A,#5,Yi_h5CALL Xuan_4CALL HangsiMOV A,36HANL A,54HCJNE A,#0,NoxuanCALL YesxuanRETYi_h5:CALL Xuan_5CALL HangsiMOV A,36HANL A,55HCJNE A,#0,NoxuanCALL YesxuanRETNoyi: ;另外五种变形防出边界冲突背景CALL YouchuMOV A,35HCJNE A,#1,Xuanzh1CALL YesxuanRETXuanzh1: ;防冲突背景CJNE A,#2,Xuanzh2CALL Xuan_1CALL YesxuanRETXuanzh2:CJNE A,#3,Xuanzh3CALL Xuan_2CALL YesxuanRETXuanzh3:CJNE A,#4,Xuanzh4CALL Xuan_3CALL YesxuanRETXuanzh4:CJNE A,#5,Xuanzh5CALL Xuan_4CALL YesxuanRETXuanzh5:CALL Xuan_5Yesxuan:MOV A,41HCJNE A,#4,OutqMOV 41H,#00HOutq:RETNoxuan:MOV 41H,43HRETYouchu: ;防右出边界子程序CALL HangyiMOV A,36HJB ,NoxuanCALL HangerMOV A,36HJB ,NoxuanCALL HangsanMOV A,36HJB ,NoxuanRETXuan_1: ;防冲突子程序CALL HangyiMOV A,36HANL A,54HCJNE A,#0,No_zyxRETXuan_2:CALL HangyiMOV A,36HANL A,55HCJNE A,#0,No_zyxCALL HangerMOV A,36HANL A,54HCJNE A,#0,No_zyxRETXuan_3:CALL HangyiMOV A,36HANL A,56HCJNE A,#0,No_zyxCALL HangerMOV A,36HANL A,55HCJNE A,#0,No_zyxCALL HangerMOV A,36HANL A,54HCJNE A,#0,No_zyxRETXuan_4:CALL HangyiMOV A,36HANL A,57HCJNE A,#0,No_zyxCALL HangerMOV A,36HANL A,56HCJNE A,#0,No_zyxCALL HangerMOV A,36HANL A,55HCJNE A,#0,No_zyxRETXuan_5:CALL HangyiMOV A,36HANL A,58HCJNE A,#0,No_zyxCALL HangerMOV A,36HANL A,57HCJNE A,#0,No_zyxCALL HangerMOV A,36HANL A,56HCJNE A,#0,No_zyxRETNo_zyx:JBC Biao_ZY,No_zNo_x:AJMP Noxuan ;旋转冲突背景No_z:MOV R3,45H ;左、右冲突背景RET;***************************** 一秒下移子程序Panduan_xia:MOV A,34HCJNE A,#100,Out_xMOV 34H,#00HMOV A,30HRL AMOV 30H,AINC 35HOut_x:RET;***************************** 判断是否可下移Panduan_xh:MOV A,35HCJNE A,#00H,X1RETX1: CJNE A,#01H,X2CALL XH1RETX2: CJNE A,#02H,X3CALL XH2RETX3: CJNE A,#03H,X4CALL XH3RETX4: CJNE A,#04H,X5CALL XH4RETX5: CJNE A,#05,X6CALL XH5RETX6: CALL XH6RET;************XH1:CALL HangyiMOV A,36HANL A,54HCJNE A,#0,WanRETXH2:CALL HangyiMOV A,36HANL A,55HCJNE A,#0,WanCALL HangerMOV A,36HANL A,54HCJNE A,#0,WanRETWan: ;游戏结束AJMP $XH3: ;防下移冲突背景子程序CALL HangyiMOV A,36HANL A,56HCJNE A,#0,Noxia3CALL HangerMOV A,36HANL A,55HCJNE A,#0,Noxia3CALL HangsanMOV A,36HANL A,54HCJNE A,#0,WanRETNoxia3:CALL HangsanMOV A,36HCJNE A,#0,WanCALL HangyiMOV A,36HORL A,55HMOV 55H,ACALL HangerMOV A,36HORL A,54HMOV 54H,ACALL SMHang ;扫描行RETXH4:CALL HangyiMOV A,36HANL A,57HCJNE A,#0,Noxia4CALL HangerMOV A,36HANL A,56HCJNE A,#0,Noxia4CALL HangsanMOV A,36HANL A,55HCJNE A,#0,Noxia4RETNoxia4:CALL HangsiMOV A,36HCJNE A,#0,WanCALL HangyiMOV A,36HORL A,56HMOV 56H,ACALL HangerMOV A,36HORL A,55HMOV 55H,ACALL HangsanMOV A,36HORL A,54HMOV 54H,ACALL SMHang ;扫描行RETXH5:CALL HangyiMOV A,36HANL A,58HCJNE A,#0,Noxia5CALL HangerMOV A,36HANL A,57HCJNE A,#0,Noxia5CALL HangsanMOV A,36HANL A,56HCJNE A,#0,Noxia5RETNoxia5:CALL HangyiMOV A,36HORL A,57HMOV 57H,ACALL HangerMOV A,36HORL A,56HMOV 56H,ACALL HangsanMOV A,36HORL A,55HMOV 55H,ACALL HangsiMOV A,36HORL A,54HMOV 54H,ACALL SMHang ;扫描行RETXH6:CALL HangyiMOV A,36HORL A,58HMOV 58H,ACALL HangerMOV A,36HORL A,57HMOV 57H,ACALL HangsanMOV A,36HORL A,56HMOV 56H,ACALL HangsiMOV A,36HORL A,55HMOV 55H,ACALL SMHang ;扫描行RETSMHang: ;积木停止,出新积木SETB BiaoXMOV 30H,#0FEHMOV 31H,#00HMOV 34H,#00HMOV 35H,#00HRET;************Hangyi:CALL XingzMOV A,#01HMOVC A,@A+DPTRMOV 32H,ACALL HengyiMOV 36H,32HRETHanger:CALL XingzMOV A,#00HMOVC A,@A+DPTRMOV 32H,ACALL HengyiMOV 36H,32HRETHangsan:CALL XingzMOV A,#07HMOVC A,@A+DPTRMOV 32H,ACALL HengyiMOV 36H,32HRETHangsi:CALL XingzMOV A,#06HMOVC A,@A+DPTRMOV 32H,ACALL HengyiMOV 36H,32HRET;***************************** 扫描是否消行Saomiao_xh:JBC BiaoX,SaomiaoRETSaomiao:MOV 41H,#00H ;消行MOV R3,#03HMOV A,42HMOV B,#07HDIV ABMOV 40H,BMOV A,54HCJNE A,#0FFH,Sao1MOV 54H,#00HINC R5Sao1:MOV A,55HCJNE A,#0FFH,Sao2MOV 55H,54HMOV 54H,#00HINC R5Sao2:MOV A,56HCJNE A,#0FFH,Sao3MOV 56H,55HMOV 55H,54HMOV 54H,#00HINC R5Sao3:MOV A,57HCJNE A,#0FFH,Sao4MOV 57H,56HMOV 56H,55HMOV 55H,54HMOV 54H,#00HINC R5Sao4:MOV A,58HCJNE A,#0FFH,Sao5MOV 58H,57HMOV 57H,56HMOV 56H,55HMOV 55H,54HMOV 54H,#00HINC R5Sao5:RET;***************************** 消行记分Jifen:CJNE R5,#0,Jia1RETJia1:MOV A,R5MOV R5,#00HCJNE A,#1,Jia2INC 46HRETJia2:CJNE A,#2,Jia3MOV A,#3ADD A,46HMOV 46H,ARETJia3:CJNE A,#3,Jia4MOV A,#7ADD A,46HMOV 46H,ARETJia4:MOV A,#10ADD A,46HMOV 46H,ARET;***************************** 得分显示JifenXianshi:MOV XIAN,#0BFHSETB WEICLR WEIMOV A,46HMOV B,#10DIV ABMOV DPTR,#TABMOVC A,@A+DPTRMOV XIAN,ASETB DUANCLR DUANCALL DelayMOV XIAN,#7FHSETB WEICLR WEIMOV A,BMOVC A,@A+DPTRMOV XIAN,ASETB DUANCLR DUANCALL DelayMOV XIAN,#0FFHSETB WEICLR WEIRET;***************************** 暂停标志位Int0_ser:CPL Biao_ztRETI;***************************** 定时计数,并出随机数T0_ser:MOV TH0,#(65536-10000) / 256MOV TL0,#(65536-10000) MOD 256INC 34HINC 42HINC 44HRETI;***************************** 清屏子程序Qingping:CLR LIECLR LWSETB LWDJNZ R0,QingpingMOV R0,#08HCLR LZSETB LZRET;***************************** 延时子程序Delay:MOV R6,#10D1: MOV R7,#10DJNZ R7,$DJNZ R6,D1RET;***************************** 随机积木7类型TAB0:DB 18H, 18H, 00H, 00H, 00H, 00H, 00H, 00H ;田字型TAB1:DB 00H, 3CH, 00H, 00H, 00H, 00H, 00H, 00H ;一字型 TAB1_1:DB 10H, 10H, 00H, 00H, 00H, 00H, 10H, 10HTAB2:DB 38H, 20H, 00H, 00H, 00H, 00H, 00H, 00H ;L型TAB2_1:DB 20H, 30H, 00H, 00H, 00H, 00H, 00H, 20HTAB2_2:DB 08H, 38H, 00H, 00H, 00H, 00H, 00H, 00HTAB2_3:DB 08H, 08H, 00H, 00H, 00H, 00H, 00H, 18HTAB3:DB 38H, 08H, 00H, 00H, 00H, 00H, 00H, 00H ;反L型 TAB3_1:DB 20H, 20H, 00H, 00H, 00H, 00H, 00H, 30HTAB3_2:DB 20H, 38H, 00H, 00H, 00H, 00H, 00H, 00HTAB3_3:DB 10H, 30H, 00H, 00H, 00H, 00H, 00H, 10HTAB4:DB 38H, 10H, 00H, 00H, 00H, 00H, 00H, 00H ;T字型 TAB4_1:DB 30H, 20H, 00H, 00H, 00H, 00H, 00H, 20HTAB4_2:DB 10H, 38H, 00H, 00H, 00H, 00H, 00H, 00HTAB4_3:DB 30H, 10H, 00H, 00H, 00H, 00H, 00H, 10HTAB5:DB 18H, 30H, 00H, 00H, 00H, 00H, 00H, 00H ;闪电型TAB5_1:DB 30H, 10H, 00H, 00H, 00H, 00H, 00H, 20HTAB6:DB 30H, 18H, 00H, 00H, 00H, 00H, 00H, 00H ;反闪电型TAB6_1:DB 30H, 20H, 00H, 00H, 00H, 00H, 00H, 10H;***************************** 暂停显示START表TABZ:DB 0FFH, 0DBH, 0B5H, 0ADH, 0DBH, 0FFHDB 0FFH, 0FDH, 0FDH, 81H, 0FDH, 0FDH, 0FFHDB 0FFH, 83H, 0EDH, 0EDH, 83H, 0FFHDB 0FFH, 81H, 0F5H, 0E5H, 0D5H, 0BBH, 0FFHDB 0FFH, 0FDH, 0FDH, 81H, 0FDH, 0FDH, 0FFHDB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH;*****************************TAB: DB 3FH, 06H, 5BH, 4FH, 66HDB 6DH, 7DH, 07H, 7FH, 6FH;*****************************END。
大学单片机毕业设计课程设计 - 俄罗斯方块
信息与电子工程学院题目:俄罗斯方块班级: 12应用电子技术3班材料包括仿真图、PCB、软件、制作图片等学习可留言时间: 2014-6-25目录一摘要 (1)二设计内容与要求 (1)2.1 内容 (1)2.2 要求 (1)三硬件设计说明 (1)3.1 STC89C52芯片 (1)3.1.1芯片简介 (1)3.1.2 电路应用 (2)3.1.3 主要性能参数 (2)3.1.4 功能概述 (2)3.1.5 引脚功能 (2)3.2 74HC573芯片 (4)3.2.1 芯片简介 (4)3.2.2 电路应用 (4)3.2.3 主要性能参数 (4)3.2.4 功能概述 (4)3.2.5 引脚功能 (4)3.3 74HC154芯片 (6)3.3.1 芯片简介 (6)3.3.2 电路应用 (6)3.3.3 主要性能参数 (6)3.3.4 功能概述 (6)3.3.5 引脚功能 (6)四工作原理 (8)4.1系统总体框图 (8)4.2端口去向表 (8)4.3硬件工作原理 (9)4.3.1最小系统模块工作原理 (9)4.3.2数码显示模块 (9)4.3.3点阵驱动模块 (10)4.3.4按键控制模块 (11)4.4软件工作原理 (11)五调试过程 (14)六总结 (15)附录Ⅰ原理图 (16)附录ⅡPCB图 (17)附录Ⅲ实物图 (18)附录ⅣBOM表 (20)附录Ⅴ仪器型号 (21)参考文献 (22)一摘要在这个信息时代,计算机已经离不开我们的生活,适当的游戏可以带来愉快的心情和健康,俄罗斯方块这个小游戏已经风靡全球,是一款老少皆宜的游戏。
二设计内容与要求2.1 内容我组俄罗斯方块共使用了STC89C52、74HC154和74HC573,三个芯片的共同使用,加上两个8*8的点阵屏来完成硬件的操作。
其中共使用6个按键进行功能的操作,每个按键的功能依程序而定分别有:复位、向上、向下、向左、向右和暂停/开始。
2.2 要求1.了解集成芯片的作用STC89C52、74HC154和74HC573及引脚功能;掌握电路的接线方式,记下每个按键的功能。
俄罗斯方块代码
int getW();
int getH();
void clearOldBox();
void putNewBox();
int collisionRotate(int box[][4]);
void getMessage();
void dispatchMessage();
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x20,0x00,0x01,0x00,0x70,0x00,
0x01,0x00,0x30,0x00,0x01,0x00,0x30,0x00,
0x00,0xF4,0x00,0xE0,0x0F,0x86,0x00,0xC0,
0x00,0x03,0x83,0x00,0x00,0x00,0x3C,0x00,
0x00,0x00,0x70,0x00,0x00,0x03,0xC0,0x00,
0x00,0x7E,0x00,0x00,0x3F,0xF0,0x00,0x00,
#define WINY 470
#define GAP 6
#define AREAX (WINX+GAP)
#define AREAY (WINY-GAP)
#define BOXW 15
int oldarea[MAXY+1][MAXX];
0x00,0xE0,0x06,0x00,0x03,0xC0,0x06,0x00,
0x0F,0x80,0x0C,0x00,0x3E,0x04,0x38,0x00,
基于单片机的88俄罗斯方块游戏..
基于单片机的8*8俄罗斯方块游戏摘要:本文集中论述了如何使用AT89C52单片机来实现8*8俄罗斯方块游戏,该系统能具体根据8*8俄罗斯方块游戏的基本规则进行游戏,并通过单片机控制点阵屏显示其8*8俄罗斯方块游戏界面。
系统具有实用实时性强、操作简单、娱乐性能好,扩展性能较好价格便宜等特点。
关键词:单片机;AT89C52;点阵屏显示管;俄罗斯方块游戏一前言汇编语言易学易用的特点,特别适合于初学者学习单片机系统编程。
随着21世纪信息社会的到来,计算机在人们的工作和生活中的深入,要求我们越来越多地与计算机打交道,为了使用户在繁忙的日程工作中得到放松,于是出现了各种各样的休闲软件,如聊天工具,游戏等等。
于是我们着手设计开始一个这样的游戏软件。
通过汇编语言的学习,我初步掌握了汇编语言的最基本的知识,于是在王筝老师的指导下动手用汇编语言编写俄罗斯方块游戏。
无可争议,《俄罗斯方块》是有史以来最伟大的游戏之一。
它是永恒的娱乐经典,但它实际上又和那些传统的经典娱乐方式不同,因为它的本质是电子化的,所以它的确属于现代产物。
《俄罗斯方块》举世闻名的游戏性,在该游戏新鲜出炉时就显得非常直观。
某些与坠落的玩具碎片和它们的形状有关的东西,使得哪怕新手也会很自然地企图把它们排列起来,并加以适当组合,就好似《俄罗斯方块》触动了我们某些内在的感官,使得哪怕是我们当中最杂乱无章的人也要把事情整理妥当。
在曾经发布过的所有游戏中,《俄罗斯方块》还被认为是仅有的一个能够真正吸引广泛人群的作品。
为了怀念经典,也为了能够给大多的计算机用户在工作之余找到一个休闲、娱乐的一个方式,我们小组开始着手用汇编语言开发一个经典的俄罗斯方块游戏,本文就是介绍一种采用52系列单片AT89C52为中心器件来实现8*8俄罗斯方块游戏,下面就设计过程及关键技术作一些具体介绍。
该文将主要为硬件和软件两部分来介绍如何用AT89C52实现8*8俄罗斯方块游戏。
二设计思路,方案比较、设计与论证1、单片机的总体设计思路:系统调试开始硬件调试软件调试系统联调现场调试调试结束模拟调试2、电源提供方案:为使模块稳定工作,须有可靠电源。
51单片机课程设计俄罗斯方块
单片机课程设计俄罗斯方块学院:工程技术学院专业:08级电子科学与技术小组成员:何冠羲,马志祥,李洋,张世刚,叶彪,郑先安,洪之目录摘要引言1.程序整体思路2.8X8LED模块显示原理3.硬件电路仿真图4.图形显示5.消层算法6.旋转算法7.实物焊接8.心得体会附录程序代码摘要记得在很小的时候,有一种掌上游戏机,里面有一款游戏叫做俄罗斯方块,那时的我们只是简单的按照游戏规则进行“堆积木”,而其中的原理却很少有人去思考,毕竟当时的我们都还很年幼。
基于单片机课程设计的机会,我们这个小组将使用51单片机和8x8led的组合,来实现比较简单的俄罗斯方块设计。
此次设计初期是在keil和proteus联合仿真中进行,编程语言为51汇编,后期是进行实物焊接。
论文描述了俄罗斯方块的主要功能函数的实现,算法分析和实物焊接过程中遇到的问题。
关键词:俄罗斯方块;算法;8X8led;引言游戏是人们活动中一项非常重要的内容,有人认为如果哪一天人类对所有的游戏都失去兴趣,恐怕世界的末日就要到了。
电脑对游戏的贡献有目共睹,现在摸过电脑的人很少有没玩过电脑游戏的,喜欢游戏的人也很少有不玩电脑的。
俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事。
这款游戏最初是由苏联的游戏制作人Alex Pajitnov制作的,它看似简单但却变化无穷,令人上瘾。
相信大多数用户都还记得为它痴迷得茶不思饭不想的那个俄罗斯方块时代。
究其历史,俄罗斯方块最早还是出现在PC机上,而我国的用户都是通过红白机了解、喜欢上它的。
现在联众又将重新掀起这股让人沉迷的俄罗斯方块风潮。
对一般用户来说,它的规则简单,容易上手,且游戏过程变化无穷,而在"联众俄罗斯方块"中,更有一些联众网络游戏所独有的魅力――有单机作战与两人在线对战两种模式,用户可任选一种进行游戏。
网络模式还增加了积分制,使用户既能感受到游戏中的乐趣,也给用户提供了一个展现自己高超技艺的场所。
汇编俄罗斯方块
摘要在windows环境下写一个程序,能够提供简单的用户图形界面,启动程序后进入该界面,用户界面由一定数量的小方格组成的方块构成。
用户可以根据相应的提示进行一些功能上的选择,如修改音乐,方块颜色和游戏难度。
当游戏开始时,计算机将随机抽取方块的放到方格上。
此游戏允许玩家旋转方块,左右移动,加速向下。
程序要实现对满行的消除并记录得分以及对游戏的结束判断。
关键词:俄罗斯方块小游戏;罗斯方块游戏的实现;汇编语言AbstractWrite a program in Windows environment, can provide a simple graphical user interface, after starting the program into the interface, the user interface is composed of a number of small square box. The user can select some functionsaccording to the corresponding prompts, such as music, the color and the difficulty of the game box. When the game begins, the computer will randomly on the grid box. This game allows the game player KLAX, move around, and accelerate down. The program to achieve the full line elimination and record the score and the game end.Keywords: Tetris, Tetris game, the realization of assembly language目录摘要 (1)Abstract (2)一、需求分析 (4)1.问题描述 (4)2.任务目标 (4)二、设计方案 (6)三、详细设计 (9)四、系统测试 (18)五、设计总结 (22)六、使用说明 (23)七、参考文献 (24)八、致谢 (25)附录: (26)1. Changliang.inc (26)2. Data.inc (27)3. Function.inc (36)一、需求分析1.问题描述在windows环境下写一个程序,能够提供简单的用户图形界面,启动程序后进入该界面,用户界面由一定数量的小方格组成的方块构成。
单片机俄罗斯方块设计 单片机俄罗斯方块设计
题目:[单片机俄罗斯方块设计]摘要随着社会的不断的发展和进步,人们对娱乐产品的关注在不断的增加,特别是电子游戏产品在我们的生活中占据了很重要的地位。
俄罗斯方块游戏是一款风靡全球的经典游戏。
这款游戏之所以叫做俄罗斯方块,是因为发明这款游戏的人是俄罗斯人。
本次为了回顾经典设计了一款基于单片机的俄罗斯方块游戏机。
本次设计了一款基于单片机的俄罗斯方块游戏机,该游戏机可以丰富我们的业余生活。
在硬件设计上该游戏机以STC89C52单片机为基础、使用LCD12864图形液晶可以显示游戏的界面、通过按键实现游戏机的按钮的功能、并具有蜂鸣器可以实现声音提示的功能。
在软件设计上,使用C语言进行了俄罗斯方块游戏的控制程序的编写,并在keil软件上进行了调试。
最后在Proteus仿真软件上对俄罗斯方块游戏的功能进行了仿真,并焊接了实物电路板。
关键词:STC89C52单片机;俄罗斯方块;游戏机;LCD12864液晶AbstractWith the continuous development and progress of society, people pay more and more attention to entertainment products, especially video game products play a very important role in our life. The Tetris game is a classic game that is popular all over the world. The game is called the Tetris, because the people who invented the game were Russian. This time in order to review the classic design of a single chip based Tetris block game machine.The design of a single chip computer based Tetris game machine, which can enrich our amateur life. On the hardware design, the game machine is based on STC89C52 microcontroller, and it can display the interface of the game by using LCD12864 graphic LCD, realize the button function of the game machine by button, and has the function of voice prompt by buzzer. In the software design, the control program of Tetris game is written in C language and debugged on the keil software. Finally, the function of the Tetris game is simulated on the Proteus simulation software, and the physical circuit board is welded.Keywords:STC89C52 singlechip;Tetris block;game machine;LCD12864 liquid crystal目录摘要 (I)Abstract........................................................... I I 第1章绪论.. (1)1.1课题研究背景和意义 (1)1.2俄罗斯方块的发展状况及趋势 (1)1.3课题研究的主要内容 (1)1.4课题研究的主要内容 (2)第2章系统整体方案设计 (4)2.1系统的功能要求 (4)2.2系统总体方案框图设计 (4)2.3单片机模块的选择 (5)2.4液晶显示模块的选择 (6)2.5按键电路的选择 (7)第3章系统整体硬件设计 (9)3.1单片机电路设计 (9)3.1.1STC89C52单片机介绍 (9)3.1.2晶振电路设计 (10)3.1.3复位电路设计 (10)3.1.4单片机最小系统电路设计 (11)3.2 LCD12864液晶显示电路 (11)3.2.1点阵LCD的显示原理 (11)3.2.2LCD12864液晶的硬件连接 (12)3.3按键控制电路 (12)3.4声音提示电路设计 (13)3.5电源电路 (13)第4章系统软件设计 (15)4.1程语言的选择 (15)4.2软件介绍和工程建立 (15)4.3俄罗斯方块流程图设计 (16)4.3.1主程序流程图 (16)4.3.2游戏外观显示流程图 (18)4.3.3俄罗斯方块向左/右移动工作流程图 (19)4.3.4俄罗斯方块中按下键的流程图 (20)第5章系统的调试与制作 (21)5.1 KEIL软件介绍 (21)5.2程序调试 (21)5.3 proteus仿真步骤 (22)5.4实物综合调试 (23)结论 (26)参考文献 (27)附录 (28)致谢.............................................. 错误!未定义书签。
8×8点阵显示的汇编及C程序
8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮;因此要实现一根柱形的亮法,对应的一列为一根竖柱,或者对应的一行为一根横柱,因此实现柱的亮的方法如下所述:一根竖柱:对应的列置1,而行则采用扫描的方法来实现。
一根横柱:对应的行置0,而列则采用扫描的方法来实现。
1.汇编源程序ORG 00HSTART: NOPMOV R3,#3LOP2: MOV R4,#8MOV R2,#0LOP1: MOV P1,#0FFHMOV DPTR,#TABAMOV A,R2MOVC A,@A+DPTRMOV P3,AINC R2LCALL DELAYDJNZ R4,LOP1DJNZ R3,LOP2MOV R3,#3LOP4: MOV R4,#8MOV R2,#7LOP3: MOV P1,#0FFHMOV DPTR,#TABAMOV A,R2MOVC A,@A+DPTRMOV P3,ADEC R2LCALL DELAYDJNZ R4,LOP3DJNZ R3,LOP4MOV R3,#3LOP6: MOV R4,#8MOV R2,#0LOP5: MOV P3,#00HMOV DPTR,#TABBMOV A,R2MOVC A,@A+DPTRMOV P1,AINC R2LCALL DELAYDJNZ R4,LOP5DJNZ R3,LOP6MOV R3,#3LOP8: MOV R4,#8MOV R2,#7LOP7: MOV P3,#00HMOV DPTR,#TABBMOV A,R2MOVC A,@A+DPTRMOV P1,ADEC R2LCALL DELAYDJNZ R4,LOP7DJNZ R3,LOP8LJMP STARTDELAY: MOV R5,#10D2: MOV R6,#20D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1DJNZ R5,D2RETTABA: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH TABB: DB 01H,02H,04H,08H,10H,20H,40H,80HEND2.C语言源程序#include <AT89X52.H>unsigned char code taba[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char code tabb[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};void delay(void){unsigned char i,j;for(i=10;i>0;i--)for(j=248;j>0;j--);}void delay1(void){unsigned char i,j,k;for(k=10;k>0;k--)for(i=20;i>0;i--)for(j=248;j>0;j--);}void main(void){unsigned char i,j;while(1){for(j=0;j<3;j++)//from left to right 3 time {for(i=0;i<8;i++){P3=taba[i];P1=0xff;delay1();}}for(j=0;j<3;j++)//from right to left 3 time {for(i=0;i<8;i++){P3=taba[7-i];P1=0xff;delay1();}}for(j=0;j<3;j++)//from top to bottom 3 time {for(i=0;i<8;i++){P3=0x00;P1=tabb[7-i];delay1();}}for(j=0;j<3;j++)//from bottom to top 3 time {for(i=0;i<8;i++){P3=0x00;P1=tabb[i];delay1();}}}}。
单片机俄罗斯方块游戏设计大全(设计思路大全,程序大全)
目录摘要 (1)1 方案论证……………………………………………………………………….开发意义…………………………………………………………………功能介绍………………………………………………………………….2 设计思路………………………………………………………………………….3 硬件电路………………………………………………………………………74HC573驱动芯片电路…………………………………………………….8*8LED点阵的接口电路…………………………………………………..单片机最小系统电路………………………………………………………..整体电路图………………………………………………………………….4 系统调试………………………………………………………………………..硬件调试………………………………………………………………………软件调试……………………………………………………………………..5 作品展示………………………………………………………………………….6 元器件清单……………………………………………………………………..7 结束语……………………………………………………………………………..致谢……………………………………………………………………………参考文献………………………………………………………………………….游戏机的制作:俄罗斯方块摘要:近年来随着计算机在社会领域的渗透, 单片机的应用正在不断地走向深入,应用到各个领域。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
我做的题目是一个用51单片机制作的游戏机,大致分位软件和硬件2大部分,硬件主要通过5按键、1个8*8LED点阵屏、一个单片机系统,实现积木的左、右、下、变化、复位五个模式,完全达到俄罗斯方块所实现的功能。
基于汇编语言(含C)的单片机Led点阵显示.doc
基于汇编语言(含C)的单片机Led点阵显示8×8发光二极管点阵显示技术在8×8发光二极管点阵上显示一个柱状,允许它从左到右平滑移动三次,然后从右到左移动三次,然后从上到下移动三次,最后从下到上移动三次,如此循环。
电路原理图图4.24.1硬件电路连接(1)。
将“单片机系统”区域的P1端口连接到“点阵模块”区域的“DR1-DR8”端口,带8个内核。
(2)将“微控制器系统”区域中的P3端口连接到具有8个内核的“点阵模块”区域中的“DC1-DC8”端口。
程序设计内容(1)。
8×8点阵发光二极管的工作原理如下图所示,说明了8×8点阵发光二极管的结构。
从图4.24.2可以看出,8×8点阵总共需要64个发光二极管,每个发光二极管位于行线和列线的交点处。
当相应的列设置为1电平,相应的行设置为0电平时,相应的二极管将点亮。
因此,为了实现柱状照明方法,如图49所示,相应的列是垂直列,或者相应的列是水平列。
因此,实现柱照明的方法如下: 垂直列:扫描行时,相应的列设置为1。
水平栏:扫描列时,相应的行被设置为0。
汇编源程序org 00H start : no MOV 3,# 3lop23360movr4,# 8movr2,# 0lop1:movp1,# 0fffhmovdptr,# tabamova,r2 movca,@ adpmovp3,A INC R2 LCALL DELAY DJNZ R4,LOP1 DJNZ R3,LOP2 MOV R3,#3 LOP4: MOV R4,#8 MOV R2,# 7 LOP : MOV P1,#0FFH MOV R2 MOVC公司,@A DPTR MOV P1公司R2 LCALL DELAY DJNZ R4,LOP5 DJNZ R3,LOP6 MOV R3,#3 LOP8: MOV R4,#8 MOV R2,#7 LOP7: MOV P3,#00H MOV DPTR,#TABB MOV A,R2 MOVC A,@A DPTR MOV P1,A DEC R2 LCALL DELAY DJNZ R4,LOP7 DJNZ R3,LOP8 LJMP启动延迟3360 MOV R5 无符号字符代码tabb[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x 80 };void delay(void) {无符号字符I,j;对于(i=10i0;(j=248j0;j-);} void delay1(void) {无符号字符I,j,k;对于(k=10k0;(i=20i0;(j=248j0;j-);} void main(void) {未签名char i,j;而(1) {对于(j=0;J3;j)//从左到右3次{对于(I=0;i8;㈠P3=塔巴·[一世;P1=0x ff;delay 1();} }对于(j=0;J3;j)//从右向左3次{对于(I=0;i8;I){ P3=塔巴·[7-I];P1=0x ff;delay 1();} }对于(j=0;J3;j)//从上到下3次{对于(I=0;i8;I){ P3=0x 00;P1=塔布·[7-I];delay 1();} }对于(j=0;J3;j)//从底部到顶部3次{对于(I=0;i8;I){ P3=0x 00;P1=塔布·[一世];delay 1();单词模型。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
纯为个人思路,无特殊,惊人语句….初学完的;程序功能:最原始简单版俄罗斯方块;硬件连接:接双色点阵;晶振型号:12M;单片机:STC89C52;编写时间:;编程人:HANG BIT P2.0 ;点阵行输入HW BIT P2.1HZ BIT P2.2LIE BIT P2.3 ;点阵列输入LW BIT P2.4LZ BIT P2.5WEI BIT P2.6DUAN BIT P2.7XIAN EQU P1BiaoX BIT 20H.0Biao_z BIT 20H.1 ;按键是否按下标志Biao_y BIT 20H.2Biao_x BIT 20H.3Dou_z BIT 20H.4 ;按键相应标志位Ying_z BIT 20H.5Dou_y BIT 20H.6Ying_y BIT 20H.7Dou_x BIT 21H.0Ying_x BIT 21H.1Biao_ZY BIT 21H.2Biao_zt BIT 21H.3 ;开始、暂停标志KEY_z BIT P0.0 ;左、右、旋转按键KEY_y BIT P0.1KEY_x BIT P0.2ORG 0000HAJMP StartORG 0003HAJMP Int0_serORG 000BHAJMP T0_serORG 0030H;*************************Start:MOV R0,#08HMOV R1,#51HMOV R3,#03HMOV R4,#08HMOV 40H,#03HMOV 30H,#0FEHMOV 33H,#0FEHMOV 37H,#80HMOV TMOD,#01HMOV TH0,#(65536-10000) / 256MOV TL0,#(65536-10000) MOD 256SETB EASETB EX0SETB ET0SETB IT0SETB TR0;*****************************Main:CALL Zhanting ;暂停响应CALL Xianshi ;点阵显示CALL CMkey_z ;左移按键CALL CMkey_y ;右移按键CALL CMkey_x ;旋转按键CALL Panduan_z ;判断是否可以左移CALL Panduan_y ;判断是否可以右移CALL Panduan_x ;判断是否可以旋转CALL Panduan_xia ;判断是否可以下移CALL Panduan_xh ;判断消行CALL Saomiao_xh ;扫描消行CALL Jifen ;计算分值CALL JifenXianshi ;分值显示ORL PCON,#01HAJMP Main;*****************************Zhanting:JB Biao_zt,Out_zt ;判断是否暂停Zhanti:MOV A,37H ;显示STARTRLC AMOV 37H,AMOV LIE,CCLR LWSETB LWDJNZ R0,ZhantiMOV R0,#08HCLR LZSETB LZRLC ARR AMOV 37H,AZhan:SETB HANGCLR HWSETB HWDJNZ R0,ZhanMOV R0,#08HMOV A,38HINC 38HMOV DPTR,#TABZMOVC A,@A+DPTRMOV 39H,A Zhant:MOV A,39HRLC AMOV 39H,AMOV HANG,CCLR HWSETB HWDJNZ R0,ZhantMOV R0,#08HCLR HZSETB HZCALL DelayCALL DelayQing:SETB HANGCLR HWSETB HWDJNZ R0,QingMOV R0,#08H Qing1:SETB HANGCLR HWSETB HWDJNZ R0,Qing1MOV R0,#08HCLR HZSETB HZDJNZ R4,ZhantiMOV R4,#08HCLR CYMOV A,38HSUBB A,#08HMOV 38H,A// MOV 38H,#00HMOV A,44HMOV 34H,#00HCJNE A,#10,ZhantingINC 38HMOV 44H,#00HMOV A,38HCJNE A,#31,ZhantingMOV 38H,#00HAJMP ZhantingOut_zt:RET;***************************** Xianshi: ;移动积木显示SETB HANGCLR HWSETB HWDJNZ R0,XianshiMOV R0,#08HLoop:MOV A,30HRLC AMOV 30H,AMOV HANG,CCLR HWSETB HWDJNZ R0,LoopMOV R0,#08HCLR HZSETB HZMOV A,30HRLC ARL AMOV 30H,ACALL XingzMOV A,31HMOVC A,@A+DPTRMOV 32H,ACALL HengyiLoop1:MOV A,32HRLC AMOV 32H,AMOV LIE,CCLR LWSETB LWDJNZ R0,Loop1MOV R0,#08HCLR LZSETB LZCALL DelayCALL QingpingBeijing: ;背景显示SETB HANGCLR HWSETB HWDJNZ R0,BeijingMOV R0,#08HLoop3:MOV A,33HRLC AMOV 33H,AMOV HANG,CCLR HWSETB HWDJNZ R0,Loop3MOV R0,#08HCLR HZSETB HZMOV A,33HRLC ARL AMOV 33H,AMOV A,@R1MOV 50H,ALoop2:MOV A,50HMOV 50H,AMOV LIE,CCLR LWSETB LWDJNZ R0,Loop2MOV R0,#08HINC R1CLR LZSETB LZCALL DelayCALL QingpingCJNE R1,#59H,Xianshi0MOV R1,#51HMOV 31H,#00HRETXianshi0:AJMP Xianshi;************ 确认显示形状Xingz:MOV A,40HCJNE A,#0,S1MOV DPTR,#TAB0RETS1: CJNE A,#1,S2CALL Xuanz1RETS2: CJNE A,#2,S3CALL Xuanz2RETS3: CJNE A,#3,S4CALL Xuanz3RETS4: CJNE A,#4,S5CALL Xuanz4RETS5: CJNE A,#5,S6CALL Xuanz5RETS6: CALL Xuanz6RETXuanz1:MOV A,41HCJNE A,#0,Xu1MOV DPTR,#TAB1RETXu1:CJNE A,#2,Zhuan1MOV DPTR,#TAB1RETZhuan1:MOV DPTR,#TAB1_1RETXuanz2:MOV A,41HCJNE A,#0,Zhuan2_1MOV DPTR,#TAB2RETZhuan2_1:CJNE A,#1,Zhuan2_2MOV DPTR,#TAB2_1RETZhuan2_2:CJNE A,#2,Zhuan2_3MOV DPTR,#TAB2_2RETZhuan2_3:MOV DPTR,#TAB2_3RETXuanz3:MOV A,41HCJNE A,#0,Zhuan3_1MOV DPTR,#TAB3RETZhuan3_1:CJNE A,#1,Zhuan3_2MOV DPTR,#TAB3_1RETZhuan3_2:CJNE A,#2,Zhuan3_3MOV DPTR,#TAB3_2RETZhuan3_3:MOV DPTR,#TAB3_3RETXuanz4:MOV A,41HCJNE A,#0,Zhuan4_1MOV DPTR,#TAB4RETZhuan4_1:CJNE A,#1,Zhuan4_2MOV DPTR,#TAB4_1RETZhuan4_2:CJNE A,#2,Zhuan4_3MOV DPTR,#TAB4_2RETZhuan4_3:MOV DPTR,#TAB4_3RETXuanz5:MOV A,41HCJNE A,#0,Zhuan5_1MOV DPTR,#TAB5RETZhuan5_1:CJNE A,#2,Zhuan5_2MOV DPTR,#TAB5RETZhuan5_2:MOV DPTR,#TAB5_1RETXuanz6:MOV A,41HCJNE A,#0,Zhuan6_1MOV DPTR,#TAB6RETZhuan6_1:CJNE A,#2,Zhuan6_2MOV DPTR,#TAB6RETZhuan6_2:MOV DPTR,#TAB6_1RET;************ 确认左右移动Hengyi:CJNE R3,#03H,H1RETH1: MOV A,32HRL ACJNE R3,#02H,H2AJMP OUT1H2: RL ACJNE R3,#01H,H3AJMP OUT1H3: RL ACJNE R3,#00H,H4AJMP OUT1H4: MOV A,32HRR ACJNE R3,#04H,H5AJMP OUT1H5: RR ACJNE R3,#05H,H6AJMP OUT1H6: RR ACJNE R3,#06H,H7AJMP OUT1H7: RR AOUT1:MOV 32H,ARET;***************************** 左移按键CMkey_z:JB KEY_z,Loopz0JB Dou_z,Loopz2SETB Dou_zRETLoopz2:INC 42HJB Ying_z,OutzSETB Ying_zSETB Biao_zRETLoopz0:CLR Dou_zCLR Ying_zOutz:RET;***************************** 右移按键CMkey_y:JB KEY_y,Loopy0JB Dou_y,Loopy2SETB Dou_yRETLoopy2:INC 42HJB Ying_y,OutySETB Ying_ySETB Biao_yRETLoopy0:CLR Dou_yCLR Ying_yOuty:RET;***************************** 旋转按键CMkey_x:JB KEY_x,Loopx0JB Dou_x,Loopx2SETB Dou_xRETLoopx2:INC 42HJB Ying_x,OutxSETB Ying_xSETB Biao_xRETLoopx0:CLR Dou_xCLR Ying_xOutx:RET;***************************** 左移防冲突Panduan_z:JBC Biao_z,ZuoyiRETZuoyi:SETB Biao_ZYCALL HangyiMOV A,36HJB ACC.7,YesZuoCALL HangerMOV A,36HJB ACC.7,YesZuoCALL HangsanMOV A,36HJB ACC.7,YesZuo ;已到边上,不用移动MOV 45H,R3DEC R3MOV A,35HCJNE A,#0,Zuo_0 ;防移动冲突背景AJMP YesZuoZuo_0:CJNE A,#1,Zuo_1AJMP YesZuoZuo_1:CJNE A,#2,Zuo_2CALL Xuan_1AJMP YesZuoZuo_2:CJNE A,#3,Zuo_3CALL Xuan_2AJMP YesZuoZuo_3:CJNE A,#4,Zuo_4CALL Xuan_3AJMP YesZuoZuo_4:CJNE A,#5,Zuo_5CALL Xuan_4AJMP YesZuoZuo_5:CALL Xuan_5YesZuo:RET;***************************** 右移防冲突Panduan_y:JBC Biao_y,YouyiRETYouyi:SETB Biao_ZYCALL HangyiMOV A,36HJB ACC.0,YesyouCALL HangerMOV A,36HJB ACC.0,YesyouCALL HangsiMOV A,36HJB ACC.0,Yesyou ;已到边上MOV 45H,R3INC R3MOV A,35HCJNE A,#0,You_0 ;防右移冲突背景AJMP YesyouYou_0:CJNE A,#1,You_1AJMP YesyouYou_1:CJNE A,#2,You_2CALL Xuan_1AJMP YesyouYou_2:CJNE A,#3,You_3CALL Xuan_2AJMP YesyouYou_3:CJNE A,#4,You_4CALL Xuan_3AJMP YesyouYou_4:CJNE A,#5,You_5CALL Xuan_4AJMP YesyouYou_5:CALL Xuan_5Yesyou:RET;***************************** 旋转防冲突Panduan_x:JBC Biao_x,XuanzhuanRETXuanzhuan: ;方形不用旋转MOV A,40HCJNE A,#0,BieRETBie:MOV A,35HCJNE A,#0,PanyiRETPanyi:MOV 43H,41HINC 41HMOV A,40HCJNE A,#1,NoyiMOV A,35HCJNE A,#1,XuanyiMOV 41H,43HRETXuanyi:MOV A,41H ;一字型防出边界CJNE A,#1,Yi_1AJMP Yi_hYi_1:CJNE A,#3,Yi_sAJMP Yi_hYi_s: ;一字型防冲突背景CALL HangyiMOV A,36HANL A,#83HCJNE A,#0,NoxuanYi_h:MOV A,35HCJNE A,#2,Yi_h2CALL Xuan_1CALL YesxuanRETYi_h2:MOV A,35HCJNE A,#3,Yi_h3CALL Xuan_2CALL YesxuanRETYi_h3:MOV A,35HCJNE A,#4,Yi_h4CALL Xuan_3CALL YesxuanRETYi_h4:MOV A,35HCJNE A,#5,Yi_h5CALL Xuan_4CALL HangsiMOV A,36HANL A,54HCJNE A,#0,NoxuanCALL YesxuanRETYi_h5:CALL Xuan_5CALL HangsiMOV A,36HANL A,55HCJNE A,#0,NoxuanCALL YesxuanRETNoyi: ;另外五种变形防出边界冲突背景CALL YouchuMOV A,35HCJNE A,#1,Xuanzh1CALL YesxuanRETXuanzh1: ;防冲突背景CJNE A,#2,Xuanzh2CALL Xuan_1CALL YesxuanRETXuanzh2:CJNE A,#3,Xuanzh3CALL Xuan_2CALL YesxuanRETXuanzh3:CJNE A,#4,Xuanzh4CALL Xuan_3CALL YesxuanRETXuanzh4:CJNE A,#5,Xuanzh5CALL Xuan_4CALL YesxuanRETXuanzh5:CALL Xuan_5Yesxuan:MOV A,41HCJNE A,#4,OutqMOV 41H,#00HOutq:RETNoxuan:MOV 41H,43HRETYouchu: ;防右出边界子程序CALL HangyiMOV A,36HJB ACC.0,NoxuanCALL HangerMOV A,36HJB ACC.0,NoxuanCALL HangsanMOV A,36HJB ACC.0,NoxuanRETXuan_1: ;防冲突子程序CALL HangyiMOV A,36HANL A,54HCJNE A,#0,No_zyxRETXuan_2:CALL HangyiMOV A,36HANL A,55HCJNE A,#0,No_zyxCALL HangerMOV A,36HANL A,54HCJNE A,#0,No_zyxRETXuan_3:CALL HangyiMOV A,36HANL A,56HCJNE A,#0,No_zyxCALL HangerMOV A,36HANL A,55HCJNE A,#0,No_zyxCALL HangerMOV A,36HANL A,54HCJNE A,#0,No_zyxRETXuan_4:CALL HangyiMOV A,36HANL A,57HCJNE A,#0,No_zyxCALL HangerMOV A,36HANL A,56HCJNE A,#0,No_zyxCALL HangerMOV A,36HANL A,55HCJNE A,#0,No_zyxRETXuan_5:CALL HangyiMOV A,36HANL A,58HCJNE A,#0,No_zyxCALL HangerMOV A,36HANL A,57HCJNE A,#0,No_zyxCALL HangerMOV A,36HANL A,56HCJNE A,#0,No_zyxRETNo_zyx:JBC Biao_ZY,No_zNo_x:AJMP Noxuan ;旋转冲突背景No_z:MOV R3,45H ;左、右冲突背景RET;***************************** 一秒下移子程序Panduan_xia:MOV A,34HCJNE A,#100,Out_xMOV 34H,#00HMOV A,30HRL AMOV 30H,AINC 35HOut_x:RET;***************************** 判断是否可下移Panduan_xh:MOV A,35HCJNE A,#00H,X1RETX1: CJNE A,#01H,X2CALL XH1RETX2: CJNE A,#02H,X3CALL XH2RETX3: CJNE A,#03H,X4CALL XH3RETX4: CJNE A,#04H,X5CALL XH4RETX5: CJNE A,#05,X6CALL XH5RETX6: CALL XH6RET;************XH1:CALL HangyiMOV A,36HANL A,54HCJNE A,#0,WanRETXH2:CALL HangyiMOV A,36HANL A,55HCJNE A,#0,WanCALL HangerMOV A,36HANL A,54HCJNE A,#0,WanRETWan: ;游戏结束AJMP $XH3: ;防下移冲突背景子程序CALL HangyiMOV A,36HCJNE A,#0,Noxia3CALL HangerMOV A,36HANL A,55HCJNE A,#0,Noxia3CALL HangsanMOV A,36HANL A,54HCJNE A,#0,WanRETNoxia3:CALL HangsanMOV A,36HCJNE A,#0,WanCALL HangyiMOV A,36HORL A,55HMOV 55H,ACALL HangerMOV A,36HORL A,54HMOV 54H,ACALL SMHang ;扫描行RETXH4:CALL HangyiMOV A,36HANL A,57HCJNE A,#0,Noxia4CALL HangerMOV A,36HANL A,56HCJNE A,#0,Noxia4CALL HangsanMOV A,36HANL A,55HCJNE A,#0,Noxia4RETNoxia4:CALL HangsiMOV A,36HCJNE A,#0,WanCALL HangyiORL A,56HMOV 56H,ACALL HangerMOV A,36HORL A,55HMOV 55H,ACALL HangsanMOV A,36HORL A,54HMOV 54H,ACALL SMHang ;扫描行RETXH5:CALL HangyiMOV A,36HANL A,58HCJNE A,#0,Noxia5CALL HangerMOV A,36HANL A,57HCJNE A,#0,Noxia5CALL HangsanMOV A,36HANL A,56HCJNE A,#0,Noxia5RETNoxia5:CALL HangyiMOV A,36HORL A,57HMOV 57H,ACALL HangerMOV A,36HORL A,56HMOV 56H,ACALL HangsanMOV A,36HORL A,55HMOV 55H,ACALL HangsiMOV A,36HORL A,54HMOV 54H,ACALL SMHang ;扫描行RETXH6:CALL HangyiMOV A,36HORL A,58HMOV 58H,ACALL HangerMOV A,36HORL A,57HMOV 57H,ACALL HangsanMOV A,36HORL A,56HMOV 56H,ACALL HangsiMOV A,36HORL A,55HMOV 55H,ACALL SMHang ;扫描行RETSMHang: ;积木停止,出新积木SETB BiaoXMOV 30H,#0FEHMOV 31H,#00HMOV 34H,#00HMOV 35H,#00HRET;************Hangyi:CALL XingzMOV A,#01HMOVC A,@A+DPTRMOV 32H,ACALL HengyiMOV 36H,32HRETHanger:CALL XingzMOV A,#00HMOVC A,@A+DPTRMOV 32H,ACALL HengyiRETHangsan:CALL XingzMOV A,#07HMOVC A,@A+DPTRMOV 32H,ACALL HengyiMOV 36H,32HRETHangsi:CALL XingzMOV A,#06HMOVC A,@A+DPTRMOV 32H,ACALL HengyiMOV 36H,32HRET;***************************** 扫描是否消行Saomiao_xh:JBC BiaoX,SaomiaoRETSaomiao:MOV 41H,#00H ;消行MOV R3,#03HMOV A,42HMOV B,#07HDIV ABMOV 40H,BMOV A,54HCJNE A,#0FFH,Sao1MOV 54H,#00HINC R5Sao1:MOV A,55HCJNE A,#0FFH,Sao2MOV 55H,54HMOV 54H,#00HINC R5Sao2:MOV A,56HCJNE A,#0FFH,Sao3MOV 56H,55HMOV 55H,54HINC R5Sao3:MOV A,57HCJNE A,#0FFH,Sao4MOV 57H,56HMOV 56H,55HMOV 55H,54HMOV 54H,#00HINC R5Sao4:MOV A,58HCJNE A,#0FFH,Sao5MOV 58H,57HMOV 57H,56HMOV 56H,55HMOV 55H,54HMOV 54H,#00HINC R5Sao5:RET;***************************** 消行记分Jifen:CJNE R5,#0,Jia1RETJia1:MOV A,R5MOV R5,#00HCJNE A,#1,Jia2INC 46HRETJia2:CJNE A,#2,Jia3MOV A,#3ADD A,46HMOV 46H,ARETJia3:CJNE A,#3,Jia4MOV A,#7ADD A,46HMOV 46H,ARETJia4:MOV A,#10ADD A,46HMOV 46H,ARET;***************************** 得分显示JifenXianshi:MOV XIAN,#0BFHSETB WEICLR WEIMOV A,46HMOV B,#10DIV ABMOV DPTR,#TABMOVC A,@A+DPTRMOV XIAN,ASETB DUANCLR DUANCALL DelayMOV XIAN,#7FHSETB WEICLR WEIMOV A,BMOVC A,@A+DPTRMOV XIAN,ASETB DUANCLR DUANCALL DelayMOV XIAN,#0FFHSETB WEICLR WEIRET;***************************** 暂停标志位Int0_ser:CPL Biao_ztRETI;***************************** 定时计数,并出随机数T0_ser:MOV TH0,#(65536-10000) / 256MOV TL0,#(65536-10000) MOD 256INC 34HINC 42HINC 44HRETI;***************************** 清屏子程序Qingping:CLR LIECLR LWSETB LWDJNZ R0,QingpingMOV R0,#08HCLR LZSETB LZRET;***************************** 延时子程序Delay:MOV R6,#10D1: MOV R7,#10DJNZ R7,$DJNZ R6,D1RET;***************************** 随机积木7类型TAB0:DB 18H, 18H, 00H, 00H, 00H, 00H, 00H, 00H ;田字型TAB1:DB 00H, 3CH, 00H, 00H, 00H, 00H, 00H, 00H ;一字型TAB1_1:DB 10H, 10H, 00H, 00H, 00H, 00H, 10H, 10HTAB2:DB 38H, 20H, 00H, 00H, 00H, 00H, 00H, 00H ;L型TAB2_1:DB 20H, 30H, 00H, 00H, 00H, 00H, 00H, 20HTAB2_2:DB 08H, 38H, 00H, 00H, 00H, 00H, 00H, 00HTAB2_3:DB 08H, 08H, 00H, 00H, 00H, 00H, 00H, 18HTAB3:DB 38H, 08H, 00H, 00H, 00H, 00H, 00H, 00H ;反L型TAB3_1:DB 20H, 20H, 00H, 00H, 00H, 00H, 00H, 30HTAB3_2:DB 20H, 38H, 00H, 00H, 00H, 00H, 00H, 00HTAB3_3:DB 10H, 30H, 00H, 00H, 00H, 00H, 00H, 10HTAB4:DB 38H, 10H, 00H, 00H, 00H, 00H, 00H, 00H ;T字型TAB4_1:DB 30H, 20H, 00H, 00H, 00H, 00H, 00H, 20HTAB4_2:DB 10H, 38H, 00H, 00H, 00H, 00H, 00H, 00HTAB4_3:DB 30H, 10H, 00H, 00H, 00H, 00H, 00H, 10HTAB5:DB 18H, 30H, 00H, 00H, 00H, 00H, 00H, 00H ;闪电型TAB5_1:DB 30H, 10H, 00H, 00H, 00H, 00H, 00H, 20HTAB6:DB 30H, 18H, 00H, 00H, 00H, 00H, 00H, 00H ;反闪电型TAB6_1:DB 30H, 20H, 00H, 00H, 00H, 00H, 00H, 10H;***************************** 暂停显示START表TABZ:DB 0FFH, 0DBH, 0B5H, 0ADH, 0DBH, 0FFHDB 0FFH, 0FDH, 0FDH, 81H, 0FDH, 0FDH, 0FFHDB 0FFH, 83H, 0EDH, 0EDH, 83H, 0FFHDB 0FFH, 81H, 0F5H, 0E5H, 0D5H, 0BBH, 0FFHDB 0FFH, 0FDH, 0FDH, 81H, 0FDH, 0FDH, 0FFHDB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH;*****************************TAB: DB 3FH, 06H, 5BH, 4FH, 66HDB 6DH, 7DH, 07H, 7FH, 6FH;*****************************END。