单片机实验课程作业乒乓球

上传人:第*** 文档编号:32822202 上传时间:2018-02-12 格式:DOCX 页数:10 大小:19.19KB
返回 下载 相关 举报
单片机实验课程作业乒乓球_第1页
第1页 / 共10页
单片机实验课程作业乒乓球_第2页
第2页 / 共10页
单片机实验课程作业乒乓球_第3页
第3页 / 共10页
单片机实验课程作业乒乓球_第4页
第4页 / 共10页
单片机实验课程作业乒乓球_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《单片机实验课程作业乒乓球》由会员分享,可在线阅读,更多相关《单片机实验课程作业乒乓球(10页珍藏版)》请在金锄头文库上搜索。

1、;系统晶振是 11.0592 MHz;R0 控制延时程序时间 R1 标记连续发球次数 R3 设置球弹跳一次的路程 R4 储存某些情况下 8 个 LED 灯的状态 R5 设置等待击球的时间 R6,R7 用于 LED 数码管显示AGREEN EQU P1.0BGREEN EQU P1.1ARED EQU P1.2BRED EQU P1.3SCOREA EQU 70H ;A 的得分SCOREB EQU 71H ;B 的得分BOARDA EQU 72H ;A 的得胜局数BOARDB EQU 73H ;B 的得胜局数SPEED EQU 74H ;存储球的移动速度LEDMOD EQU 00H ;左边输入

2、八位字符显示;外部译码键扫描方式 ,双键互锁LEDFEQ EQU 2FH ;扫描速率LEDCLS EQU 0C1H ;清除显示 RAMLEDWR0 EQU 80H ;设定的将要写入的显示 RAM 地址LBOARD EQU 02H ;三局两胜制LSCORE EQU 0BH ;11 分制D8255 EQU 8406H ;8255 状态/命令口地址D8255A EQU 8400H ;8255 PA 口地址D8255B EQU 8402H ;8255 PB 口地址D8255C EQU 8404H ;8255 PC 口地址Z8279 EQU 0FF82H ;8279 状态/命令口地址D8279 EQU

3、0FF80H ;8279 数据口地址BOUND EQU 05H ;发球前弹跳的速度NUMMOVE EQU 07H ;球从左到右所走的路程NUMSHINE EQU 03H ;闪烁的次数READKB EQU 00H ;读 FIFO RAM 地址 0 的命令字DELETE EQU 0C2H ;清除 FIFO RAMSRIGTH EQU 20H.0 ;设置此处片内 RAM 为发球权归属,0-A 1-BORG 0000HAJMP STARTORG 0040HSTART:MOV R1,#02HMOV SP,#60HMOV R5,#NUMSHINE ;设置闪烁三次CLR SRIGTH ;设置 A 初始发球M

4、OV DPTR,#D8255 MOV A,#82H MOVX DPTR,A ;置 8255 状态,方式 0,PA,PC 口输出,PB 口输入MOV DPTR,#D8255A ;DPTR 指向 A 端口MOV R3,#NUMMOVE ;设置路程MOV A,#0HMOV SCOREA,A ;初始的分数都为 0MOV SCOREB,AMOV BOARDA,AMOV BOARDB,A;可以设置回球的速度为 0.5 秒LCALL INIT_ALL ;初始化 8279 并显示LCALL INIT8279 MOV R0,#02H LCALL DELAYLCALL DISPLAY ;初始化 8279 并显示L

5、JMP REPLAY ;*发球总程序SERVICE:MOV C,SRIGTHJNC ASERVICE ;如果为 0,则 A 发球LJMP BSERVICE ;否则 B 发球;*发球总程序;*A 发球程序 ASERVICE: CLR AGREEN ;首先设置 A 方为绿灯,A 发球SETB AREDAWAIT: ;以下为等 A 发球,同时球在弹跳的程序MOV R0,#BOUND ;设置弹跳为 0.1 秒一次MOV R4,#01H MOV A,R4 MOV DPTR,#D8255A MOVX DPTR,ACPL P3.5LCALL DELAYMOV A,#00HMOVX DPTR,A CPL P3

6、.5 LCALL DELAY LCALL GETKEY ;循环等待 A 方发球CJNE A,#0FFH,AWAIT MOV A,B CJNE A,#30H,AWAIT ;如果输入的不是 A 的发球键,继续循环 ASEND: ;A 传球程序CLR AGREEN CLR AREDSETB BRED SETB BGREEN ;可以设置回球的速度为 0.5 秒MOV A,SPEEDMOV R0,A ;可以设置回球的速度为 0.5 秒MOV A,#01H LCALL ROTATE1 ;调用 A 传球程序,把球送到 B 方CPL P3.5 LCALL INVALID_8279 ;要求 A 传球期间 B 的

7、按键无效LCALL INIT_8255LCALL SHINE ;shine 持续数秒,期间 B 可以输入 LCALL GETKEY ;读取这一期间的输入CJNE A,#0FFH,AUDITA ;如果没有输入,B 失球,开始清算!MOV A,BCJNE A,#36H,AUDITA ;如果没有输入(输入错误),B 失球,开始清算!LJMP BSEND;*A 发球程序;B 发球程序* BSERVICE:CLR BGREEN ;首先设置 B 方为绿灯,B 发球SETB BRED BWAIT: ;以下为等 B 发球,同时球在弹跳的程序MOV R0,#BOUND ;设置弹跳为 0.2 秒一次MOV R4,

8、 #80H MOV A,R4 MOV DPTR,#D8255A MOVX DPTR,ACPL P3.5LCALL DELAYMOV A,#00HMOVX DPTR,A CPL P3.5 LCALL DELAY LCALL GETKEY ;看 B 方发球有没有发球CJNE A,#0FFH,BWAIT MOV A,BCJNE A,#36H,BWAIT ;如果输入的不是 B 的发球键,继续循环 BSEND: ;B 传球程序 CLR BGREEN CLR BREDSETB ARED SETB AGREEN ;可以设置回球的速度为 0.5 秒MOV A,SPEEDMOV R0,A ;可以设置回球的速度为

9、 0.5 秒MOV A,#80H LCALL ROTATE2 ;调用 B 传球程序,把球送到 B 方CPL P3.5 LCALL INVALID_8279 ;要求 B 传球期间 A 的按键无效LCALL INIT_8255LCALL SHINE ;shine 持续数秒,期间 A 可以输入LCALL GETKEY ;读取这一期间的输入CJNE A,#0FFH,AUDITB ;如果没有输入,A 失球,开始清算!MOV A,BCJNE A,#30H,AUDITB ;如果没有输入(输入错误),A 失球,开始清算! LJMP ASEND;*B 发球程序 REPLAY:DJNZ R1,RESTAMOV R

10、1,#02HCPL SRIGTHRESTA:LJMP SERVICE AUDITA:CLR BREDSETB BGREENSETB AGREENSETB AREDLCALL DELAYMOV A,SCOREA ;A 的得分加一INC AMOV SCOREA,A;初始化 8279 并显示LCALL DISPLAY NOP;初始化 8279 并显示CJNE A,#LSCORE,REPLAY ;没加够 11,则继续玩 LJMP CHECKA ;加够 11,则进入 A 的 2 级清算 AUDITB: CLR AREDSETB AGREEN SETB BGREENSETB BREDLCALL DELAY

11、MOV A,SCOREB ;B 的得分加一INC AMOV SCOREB,A;初始化 8279 并显示LCALL DISPLAY ;初始化 8279 并显示 CJNE A,#LSCORE,REPLAY ;没加够 11,则继续玩LJMP CHECKB ;加够 11,则进入 B 的 2 级清算 CHECKA:MOV A,#0H ;AB 的得分清零MOV SCOREA,A MOV SCOREB,A MOV A,BOARDAINC AMOV BOARDA,A ;初始化 8279 并显示LCALL DISPLAY ;初始化 8279 并显示 CJNE A,#LBOARD,REPLAYLJMP AWINCHECKB:MOV A,#0H ;AB 的得分清零MOV SCOREA,A MOV SCOREB,A MOV A,BOARDBINC AMOV BOARDB,A;初始化 8279 并显示LCALL DISPLAY ;初始化 8279 并显示CJNE A,#LBOARD,REPLAYLJMP BWIN AWIN:CLR AGREENSETB AREDSETB BREDSETB BGREENMOV A,#0HMOV SCOREA,AMOV SCOREB,AMOV BOARDB,A LCALL DISPLAY SJM

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 工程造价

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号