51单片机课程设计 俄罗斯方块_51单片机俄罗斯方块

其他范文 时间:2020-02-28 17:52:49 收藏本文下载本文
【www.daodoc.com - 其他范文】

51单片机课程设计 俄罗斯方块由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“51单片机俄罗斯方块”。

单片机课程设计

俄罗斯方块

学院:工程技术学院

专业:08级电子科学与技术

小组成员:

何冠羲,马志祥,李洋,张世刚,叶彪,郑先安,洪之

目录

摘要

引言

1.程序整体思路

2.8X8LED模块显示原理 3.硬件电路仿真图 4.图形显示 5.消层算法 6.旋转算法 7.实物焊接

8.心得体会

附录 程序代码

摘 要

记得在很小的时候,有一种掌上游戏机,里面有一款游戏叫做俄罗斯方块,那时的我们只是简单的按照游戏规则进行“堆积木”,而其中的原理却很少有人去思考,毕竟当时的我们都还很年幼。

基于单片机课程设计的机会,我们这个小组将使用51单片机和8x8led的组合,来实现比较简单的俄罗斯方块设计。

此次设计初期是在keil和proteus联合仿真中进行,编程语言为51汇编,后期是进行实物焊接。

论文描述了俄罗斯方块的主要功能函数的实现,算法分析和实物焊接过程中遇到的问题。

关键词:俄罗斯方块;算法; 8X8led;

引 言

游戏是人们活动中一项非常重要的内容,有人认为如果哪一天人类对所有的游戏都失去兴趣,恐怕世界的末日就要到了。电脑对游戏的贡献有目共睹,现在摸过电脑的人很少有没玩过电脑游戏的,喜欢游戏的人也很少有不玩电脑的。

俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事。这款游戏最初是由苏联的游戏制作人Alex Pajitnov制作的,它看似简单但却变化无穷,令人上瘾。相信大多数用户都还记得为它痴迷得茶不思饭不想的那个俄罗斯方块时代。究其历史,俄罗斯方块最早还是出现在PC机上,而我国的用户都是通过红白机了解、喜欢上它的。现在联众又将重新掀起这股让人沉迷的俄罗斯方块风潮。对一般用户来说,它的规则简单,容易上手,且游戏过程变化无穷,而在“联众俄罗斯方块”中,更有一些联众网络游戏所独有的魅力――有单机作战与两人在线对战两种模式,用户可任选一种进行游戏。网络模式还增加了积分制,使用户既能感受到游戏中的乐趣,也给用户提供了一个展现自己高超技艺的场所。

俄罗斯方块游戏可以说是随计算机的发展而发展,并不断推陈出新演变出各种类似游戏, 深受广大玩家喜爱。这个游戏有的简单, 有的复杂, 但其根本原理是一样的都是对运动的方块进行组合, 来训练玩家的反应能力。本文利用单片机进行俄罗斯方块设计,采用51汇编语言进行编程,基于汇编语言的原因是在编写程序的过程中,对于程序的执行会有一个比较直观的表现。

1.程序整体思路

单片机上的程序设计一般是一个大循环结构,对于俄罗斯方块的程序设计,首先产生一个伪随机数,其范围是0-6,然后程序根据此数值所对应的图形模块装入ram的固定区域内,紧接着将此图像写入led所对应的显示缓冲区中,显示程序将缓冲区内的内容显示在led上,如果没有控制键按下,图形将自动向下移动。如果有键按下,程序将根据按下的键来改变图形存储区的值,同时程序将判断图形是否已到达边界,当图形最上层到达显示区顶部,则游戏结束,此时将清楚显示缓冲的内容,游戏重新开始。2.8x8led显示原理

8x8led显示屏的原理图如下

由于人眼的视觉暂留现象,通过逐行扫描显示的方式来显示要显示的内容,当每一行扫描的时间很小时人眼观察的将是一幅完整的图像。

3. 硬件电路仿真图

.4.图形显示

8x8led一共有64个led,可以从下至上一次对其编号,对于显示类的基本操作是任意点亮一个点,熄灭一个点,任意点亮n(0

我们将ram中从21h单元到28h单元作为led的显示缓冲区,这里面的每一位对应led的一个点,led将实时显示缓冲区的内容,也就是当此缓冲区内容一改变,led上看到的也会做出相应的改变。同时在俄罗斯方块中那些方块被存放在一个类似于一维的数组之中,每一个方块对应四个小方块,根据伪随机数将这四个小方块对应的值装入ram固定的区域内。如果要显示方块只需将这些方块所对应的点写入缓冲区。5.消层算法

设置循环变量数R2=8,即总共至少要扫描8次,每一次循环过程中检测此行是否已满,也就是检测这一行所对应的存储单元是否全为一,如果全为一则将消去此行,即将此行对应的ram清零。同时将此行上面ram的内容按每列依次下移,下移完之后重新将R2=0,又从第一行开始检测。此行不全为零时只需将R2=R2+1。直到R2=9消层过程结束。6.旋转算法

首先要确定一个旋转中心,假如旋转中心的编号是34,将34除以8,商是4存入R1余数是2存入R2,及时用商和余数建立坐标系。此时若以此为旋转中心的图形需要旋转,则将每一个小方块对应编号除以8,商减去R1,余数减去R2,而每一个方块一次将旋转90度,所以有公式x1,y1,x2,y2

x2=-y1,y2= x1 其中x1,y1为旋转之前的坐标,x2,y2为旋转之后的坐标。旋转完之后将x2加上R1将y2加上R2,然后将x2乘以8再加上y2。执行四次此过程旋转结束。7.实物焊接

器件:stc51单片机一块,8x8led显示模块一块,电阻10k10个,开关5个,与门,12m晶振一个,电容3个。

首先按照目的进行进行元器件布局,然后按照电路图里的导线的连接次序将元器件焊在电路板上,焊好之后进行调试。8.心得体会

写程序的过程中,首先应该把程序思路理清,然后再写代码,否则写到一半感觉行不通时是很令人心烦的。还有就是焊接是一个技术活,因为在电子工艺实习之后大家便没有碰过电烙铁,所以焊的过程还是很辛苦的。

附录:程序代码

ORG

0000H AJMP

START ORG

0003H AJMP

INTERRUPT AA

EQU

10000000B BB

EQU

11111111B HANG

EQU

32H LIE

EQU

33H COUNT

EQU

34H REMOVEROW

EQU

35H STEPS

EQU

36H XUNHUAN

EQU

37H BIANLIANG

EQU

38H GRAPHRAM1

EQU

39H GRAPHRAM2

EQU

40H GRAPHRAM3

EQU

41H GRAPHRAM4

EQU

42H XXX

EQU

43H YYY

EQU

44H KEY

EQU

45H LEDHEAD

EQU

21H

TEST

BIT 100 BITS

BIT 99 RIGHT

BIT 98 LEFT

BIT 97 DOWN

BIT 96 HARD

BIT 95 TURN

BIT 94 KEYDOWN

BIT 93 TESTING

BIT 92 BOTTOM

BIT 91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;程序由此处开始执行;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;START: MOV

TCON,#00000001B;;;;;;;;;;;;;设置外部中断0响应方式为下降沿触发 SETB

EX0 SETB

EA MOV

SP,#60H;;;;;;;;;;;;;;;;;;;;;将堆栈指针SP设置在RAM的高地址处 MOV

R7,#6;;;;;;;;;;;;;;;;;;;;;;R7作为存放0-6这7个随机数的变量

MOV

P0,#11111111B;;;;;;;;;;;;;;;;;;;;;;将P0口最为输入口 LCALL

WRITEGRAPHTORAM CLR

TESTING GAMELOOP:;CLR

EA LCALL

SHOWGRAPH MOV

R6,#30 TIMING: LCALL

SHOWLEDRAM LCALL

DJNZ

LCALL

JNB

ABCD: MOV

CJNE

LCALL

LCALL

JMP

NEXT1:;JB

JMP

KEY1: CLR

CLR

MOV

CJNE

LCALL

JB

LCALL

LCALL

LCALL

KEY2: CJNE

LCALL

JB

LCALL

LCALL

LCALL

KEY3: CJNE

;LCALL

;JNB

DELAY

R6,TIMING

DOWNTEST DOWN,NEXT1

A,28H A,#0,GAMEOVER

REMOVEBLOCK

WRITEGRAPHTORAM GAMELOOP KEYDOWN,KEY1 KEY4 TESTING KEYDOWN

A,KEY A,#1,KEY2;1-LEFT

LEFTTEST LEFT,KEY4

CLEANGRAPH

MOVELEFT

GAMELOOP A,#2,KEY3;2-RIGHT

RIGHTTEST RIGHT,KEY4

CLEANGRAPH

MOVERIGHT

GAMELOOP A,#4,KEY4;4-ROTATE

ROTATIONTEST

TURN,KEY4

LCALL

CLEANGRAPH LCALL

ROTATION JMP

GAMELOOP KEY4: CJNE

A,#8,KEY5 SWEAT: LCALL

DOWNTEST JB

DOWN,GAMELOOP LCALL

CLEANGRAPH LCALL

MOVEDOWN JMP

SWEAT KEY5: LCALL

CLEANGRAPH LCALL

MOVEDOWN INC

R7 CJNE

R7,#7,NEXT5 MOV

R7,#0 NEXT5: JMP

GAMELOOP GAMEOVER: MOV

R0,#8 MOV

R1,#LEDHEAD CLEAR: LCALL

CLEANGRAPH MOV

@R1,#0 INC

R1 DJNZ

R0,CLEAR MOV

R0,#4 MOV

R1,#GRAPHRAM1 ASDF: MOV

A,@R1 ADD

A,#16 MOV

@R1,A INC

R1 DJNZ

R0,ASDF JMP

GAMELOOP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;测试图形是否能向下移动;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;DOWNTEST: PUSH

0 PUSHPUSHPUSHPUSH

B PUSH

ACC

MOV

R2,#4 MOV

R0,#GRAPHRAM1 DOWN0: MOV

A,@R0 SUBB

A,#8 MOV

B,A MOV

R3,#4 CLR

C MOV

R1,#GRAPHRAM1 DOWN2: CLR

C SUBB

A,@R1 JZ

DOWN1 INC

R1 MOV

A,B DJNZ

R3,DOWN2 LCALL

TESTBIT JB

BITS,DOWN3 DOWN1: INC

R0 DJNZ

R2,DOWN0 CLR

DOWN JMP

HOPE DOWN3: SETB

DOWN;DOWN WEI YI BIAO SHI BU NENG WANG CPL

P3.4 JMP

DOWN4 HOPE: MOV

R2,#4 MOV

R0,#GRAPHRAM1 YOUQIANG2: MOV

R3,#1 CCC2: MOV

A,R3 MOV

B,A CLR

C SUBB

A,@R0 JNZ

CCC1 SETB

DOWN SETB

BOTTOM JMP

DOWN4

XIA YI DONG CCC1: MOV

A,B INC

R3 CJNE

R3,#9,CCC2 INC

R0 DJNZ

R2,YOUQIANG2 DOWN4: POP

ACC POP

B POPPOPPOPPOP

0 RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;外部中断0中断处理程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;INTERRUPT: PUSH

0 PUSHPUSH

ACC INC

R7 CJNE

R7,#7,INTT MOV

R7,#0 INTT: SETB

TESTING SETB

KEYDOWN MOV

A,P0 CPL

A MOV

KEY,A POP

ACC POPPOP

0 RETI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;测试能否旋转

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;向下移动

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MOVEDOWN: PUSH

0 PUSHPUSH

ACC MOV

R0,#GRAPHRAM1 MOV

R1,#4 MOVE1: MOV

A,@R0 CLR

C SUBB

A,#8 MOV

@R0,A INC

R0 DJNZ

R1,MOVE1 POP

ACC POPPOP

0 RET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;向左移动

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MOVELEFT: PUSH

0 PUSHPUSH

ACC MOV

R0,#GRAPHRAM1 MOV

R1,#4 MOVE2: MOV

A,@R0 CLR

C SUBB

A,#1 MOV

@R0,A INC

R0 DJNZ

R1,MOVE2 POP

ACC POPPOP

0 RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;向右移动

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MOVERIGHT: PUSH

0 PUSHPUSH

ACC MOV

R0,#GRAPHRAM1 MOV

R1,#4 MOVE3: MOV

A,@R0 CLR

C INC

A

MOV

@R0,A INC

R0 DJNZ

R1,MOVE3 POP

ACC POPPOP

0 RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;将图形写入RAM缓存中;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WRITEGRAPHTORAM: PUSH

ACC PUSH

B PUSH

0 PUSHPUSHPUSHMOV

R1,#4 MOV

A,R7 MOV

B,#4 MUL

AB MOV

R2,A MOV

R0,#GRAPHRAM1 MOV

DPTR,#GRAPH WRITEGRAPH: MOV

A,R2 MOVC

A,@A+DPTR;SUBB

A,#16 MOV

@R0,A INC

R2 INC

R0 DJNZ

R1,WRITEGRAPH POPPOPPOPPOP

0 POP

B POP

ACC RET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;测试某一个二进制位是否为1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;TESTBIT: PUSH

0 PUSHPUSH

B PUSH

ACC MOV

B,#8 DIV

AB MOV

R0,A MOV

A,B CJNE

A,#0,TEST3 MOV

A,R0 DEC

A JMP

TEST4 TEST3: MOV

A,R0 TEST4:

MOV

DPTR,#TAB1

MOV

R1,#LEDHEAD ADD

A,R1 MOV

R1,A MOV

A,B MOVC

A,@A+DPTR ANL

A,@R1 CJNE

A,#0,TEST1 CLR

BITS JMP

TEST2 TEST1: SETB

BITS TEST2: POP

ACC POP

B POPPOP

0 RET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;测试图形是否能向左移动;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

LEFTTEST: PUSH

0 PUSHPUSHPUSHPUSH

B PUSH

ACC MOV

R2,#4 MOV

R0,#GRAPHRAM1 LEFT0: MOV

A,@R0 CLR

C SUBB

A,#1 MOV

B,A MOV

R3,#4;CLR

C MOV

R1,#GRAPHRAM1 LEFT2: CLR

C SUBB

A,@R1 JZ

LEFT1 INC

R1 MOV

A,B DJNZ

R3,LEFT2 LCALL

TESTBIT JB

BITS,LEFT3

LEFT1: INC

R0 DJNZ

R2,LEFT0 CLR

LEFT JMP

LEFT4 LEFT3: SETB

LEFT;DOWN WEI YI BIAO SHI BU NENG WANG CPL

P3.4 JMP

LEFT5 LEFT4: MOV

R2,#4 MOV

R0,#GRAPHRAM1 YOUQIANG: MOV

R3,#9 MOV

A,#1 HHH2:

MOV

B,A CLR

C

XIA YI DONG SUBB

A,@R0 JNZ

HHH1 SETB

LEFT JMP

LEFT5 HHH1: MOV

A,B ADD

A,#8 DJNZ

R3,HHH2 INC

R0 DJNZ

R2,YOUQIANG LEFT5: POP

ACC POP

B POPPOPPOPPOP

0 RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;测试图形是否能向右移动;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;RIGHTTEST: PUSH

0 PUSHPUSHPUSHPUSH

B PUSH

ACC MOV

R2,#4 MOV

R0,#GRAPHRAM1 RIGHT0: MOV

A,@R0 ADD

A,#1 MOV

B,A MOV

R3,#4;CLR

C MOV

R1,#GRAPHRAM1 RIGHT2: SUBB

A,@R1 JZ

RIGHT1 INC

R1 MOV

A,B DJNZ

R3,RIGHT2

LCALL

TESTBIT JB

BITS,RIGHT3 RIGHT1: INC

R0 DJNZ

R2,RIGHT0 CLR

RIGHT JMP

RIGHT4 RIGHT3: SETB

RIGHT;DOWN WEI YI BIAO SHI BU NENG WANG CPL

P3.4 JMP

RIGHT5 RIGHT4: MOV

R2,#4 MOV

R0,#GRAPHRAM1 YOUQIANG1: MOV

R3,#8 MOV

A,#8 III2:

MOV

B,A CLR

C SUBB

A,@R0 JNZ

III1 SETB

RIGHT JMP

RIGHT5 III1: MOV

A,B ADD

A,#8 DJNZ

R3,III2 INC

R0 DJNZ

R2,YOUQIANG1 RIGHT5: POP

ACC POP

B POPPOPPOPPOP

0 RET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;图形旋转

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

XIA YI DONG ROTATION: PUSH

0 PUSHPUSHPUSHPUSH

B PUSH

ACC MOV

A,GRAPHRAM1;A=50 MOV

B,#8 DIV

AB

;A=6 B= 2 MOV

HANG,A

;HANG = 6 MOV

LIE,B

;LIE = 2 MOV

R3,#4 MOV

R0,#GRAPHRAM1 ROTATESTART: MOV

A,@R0 MOV

B,#8 DIV

AB

CLR

C SUBB

A,HANG

MOV

R1,A

MOV

A,B CLR

C SUBB

A,LIE MOV

R2,A;;;;;;;;;;;;;;;;;;X2=-Y1 Y2=X1 MOV

A,#0 CLR

C SUBB

A,R2;-Y1 MOV

B,R1;X1 MOV

R1,A;X2=-Y1 MOV

R2,B;Y2=X1 MOV

A,R1 ADD

A,HANG MOV

R1,A MOV

A,R2 ADD

A,LIE MOV

R2,A MOV

A,R1 MOV

B,#8 MUL

AB ADD

A,R2

MOV

@R0,A

INC

R0 DJNZ

R3,ROTATESTART POP

ACC POP

B POPPOPPOPPOP

0 RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;显示LEDRAM中的内容;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SHOWLEDRAM: PUSH

0 PUSHPUSH

B PUSH

ACC MOV

R0,#LEDHEAD MOV

R1,#8 MOV

A,#AA SHOW1: MOV

P1,A MOV

P2,@R0

LCALL

DELAY

INC

R0 RL

A DJNZ

R1,SHOW1 POP

ACC POP

B POPPOP

0 RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;软件延时

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;DELAY: PUSHPUSHMOV

R1,#5 FQFQ: MOV

R2,#200 FWFW: DJNZ

R2,FWFW DJNZ

R1,FQFQ POPPOPRET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;清楚图形在LEDRAM中的内容;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CLEANGRAPH: PUSH

ACC PUSHMOV

A,#GRAPHRAM1 MOV

XUNHUAN,#4 MOV

R1,A DADA1: MOV

A,@R1;SUBB

A,#16 LCALL

WRITEPOINT0 INC

R1 DJNZ

XUNHUAN,DADA1 POPPOP

ACC

RET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;显示图形在LEDRAM中的内容;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SHOWGRAPH: PUSH

ACC PUSH

MOV

A,#GRAPHRAM1 MOV

XUNHUAN,#4 MOV

R1,A DADA2: MOV

A,@R1;SUBB

A,#16 LCALL

WRITEPOINT1 INC

R1 DJNZ

XUNHUAN,DADA2 POPPOP

ACC

RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;消除已经填满的行

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;REMOVEBLOCK: PUSH

0 PUSHPUSH

B PUSH

ACC REMOVESTART: MOV

R0,#1 MOV

R1,#LEDHEAD REMOVE2: MOV

A,@R1 CJNE

A,#11111111B,REMOVE1

MOV

@R1,#00000000B MOV

REMOVEROW,R0 LCALL

DOWNBLOCK

JMP

REMOVESTART REMOVE1: INC

R0 INC

R1 MOV

A,R0 CJNE

A,#9,REMOVE2 POP

ACC POP

B POPPOP

0 RET DOWNBLOCK: PUSH

0 PUSHPUSH

B PUSH

ACC MOV

R0,#1 DOWN11: MOV

A,REMOVEROW MOV

B,#8 MUL

AB ADD

A,R0 LCALL

DOWNSTEP LCALL

JUSTMOVE INC

R0 MOV

A,R0 CJNE

A,#9,DOWN11 POP

ACC POP

B POPPOP

0 RET

DOWNSTEP: PUSH

0 PUSHPUSH

B PUSH

ACC MOV

R0,#0 MOV

R1,REMOVEROW STEP2: CLR

C SUBB

A,#8 LCALL

TESTBIT JB

BITS,STEP1 INC

R0 DJNZ

R1,STEP2 STEP1: MOV

STEPS,R0 POP

ACC POP

B POPPOP

0 RET

JUSTMOVE: PUSH

0 PUSHPUSHPUSH

B PUSH

ACC MOV

R0,A MOV

A,STEPS MOV

B,#8 MUL

AB MOV

B,A MOV

A,R0 CLR

C SUBB

A,B MOV

R1,A MOV

R2,REMOVEROW

MOV

A,#8 CLR

C SUBB

A,R2 MOV

JUST3: MOV

LCALL

JB

MOV

LCALL

JMP

JUST1: MOV

LCALL

JUST2: MOV

ADD

MOV

MOV

ADD

MOV

DJNZ

MOV

DDD: MOV

LCALL

MOV

ADD

MOV

DJNZ

JUSTEND:

POP

POP

POP

POP

POP

RET R2,A A,R0 TESTBIT BITS,JUST1 A,R1 WRITEPOINT0 JUST2 A,R1 WRITEPOINT1 A,R0 A,#8 R0,A A,R1 A,#8 R1,A R2,JUST3 R2,REMOVEROW A,R1 WRITEPOINT0 A,R1 A,#8 R1,A R2,DDD ACC B 2 1 0

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;将某个二进制位写1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WRITEPOINT1: PUSH

0 PUSHPUSHPUSHPUSH

B PUSH

PUSH

PUSH

CLR

MOV

SUBB

JNC

MOV

MOV

MOV

DIV

MOV

MOV

CJNE

MOV

DEC

JMP

WRITE11: MOV

WRITE12: ADD

MOV

MOV

MOV

MOV

MOV

MOVC

ORL

MOV

END1: POP

POP

POP

POP

POP

ACC DPH DPL C R0,A A,#65 END1 A,R0 R1,#LEDHEAD B,#8 AB R0,A A,B A,#0,WRITE11 A,R0 A WRITE12 A,R0 A,R1 R1,A A,@R1 R2,A DPTR,#TAB1 A,B A,@A+DPTR A,R2 @R1,A DPL DPH ACC B 3

POPPOPPOP

0 RET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;将某个二进制位写0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WRITEPOINT0: PUSH

0 PUSHPUSHPUSH

B PUSH

ACC PUSH

DPH PUSH

DPL

MOV

R0,A CLR

C SUBB

A,#65 JNC

END2 MOV

A,R0 MOV

R1,#LEDHEAD MOV

B,#8 DIV

AB MOV

R0,A MOV

A,B CJNE

A,#0,WRITE01 MOV

A,R0 DEC

A JMP

WRITE02 WRITE01: MOV

A,R0 WRITE02: ADD

A,R1 MOV

R1,A MOV

A,@R1 MOV

R2,A MOV

DPTR,#TAB2 MOV

A,B MOVC

A,@A+DPTR ANL

A,R2 MOV

@R1,A END2: POP

DPL POP

DPH POP

ACC POP

B POPPOPPOP

0 RET GRAPH:

DB

69,60,61,62,69,68,61,62,69,70,60,61,69,70,61,62,69,77,61,62,69,77,61,60,69,69,61,77

TAB1:

DB

00000001B,10000000B,01000000B,00100000B,00010000B,00001000B,00000100B,00000010B TAB2:

DB

11111110B,01111111B,10111111B,11011111B,11101111B,11110111B,11111011B,11111101B

END

单片机课程设计

2014单片机课程设计课程设计基本格式:一。摘要(300字)基于何种原理,采用什么方法,达到什么目的,得到什么结果。二。正文(有图有文):1.方案论证与比较系统设计(或设计原理)与理论分析(或......

单片机课程设计

设计题目: 单片机课程设计 学生姓名:学院: 电气与信息工程学院班级: 电子111班 指导教师:日 期: 2014年9月20日一、课程设计目的:了解电子元器件的功能与原理,掌握单片机的结构和原......

单片机课程设计

设计题目:直流电子负载姓 名 张红俊 学 院 信息与电气工程学院专 业 电气工程及其自动化 年 级 2009级 学 号 20092926012 指导教师 常新华 摘要:简易直流电子负载主要由恒流......

单片机课程设计

镇江高等专科学校课程设计1 项目要求基于AT89S51单片机的密码锁设计,具体功能如下: (1)总共可以设置8位密码,每位密码值范围为1~8。 (2)用户可自行设定和修改密码。 (3)按每个......

单片机课程设计

分类号编号烟 台 大 学课 程 设 计基于单片机8051的密码锁控制院系:机电学院专业:机械设计制造及其自动化姓名:学号:2010年7 月 6 日0目录第一章:引言·············......

下载51单片机课程设计 俄罗斯方块word格式文档
下载51单片机课程设计 俄罗斯方块.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

热门文章
点击下载本文