五子棋电子棋盘单片机8051程序

五子棋电子棋盘单片机8051程序

ID:47358982

大小:34.08 KB

页数:10页

时间:2019-08-04

五子棋电子棋盘单片机8051程序_第1页
五子棋电子棋盘单片机8051程序_第2页
五子棋电子棋盘单片机8051程序_第3页
五子棋电子棋盘单片机8051程序_第4页
五子棋电子棋盘单片机8051程序_第5页
资源描述:

《五子棋电子棋盘单片机8051程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、简易电子棋盘程序设计ORG0000HAJMPMAINORG000BHAJMPONEWINORG001BHAJMPRINGORG0030H;****************定时器T1中断子程序RING:INCR0CJNER0,#7FH,RETUSETBP1.2;若等待8秒未按键,则蜂鸣器响MOVR0,#0RETU:RETI;*******************主程序MAIN:CLRP1.0;所有T触发器复位,所有LED熄灭MOVTMOD,#10HMOVTH1,#0MOVTL1,#0SETBEA;中断允许SETBET1;开定时中断1SETBET0;开定时中断0SETBP1

2、.0;置位P1.0,T触发器有效,可以点亮LEDMOVDPTR,#7FFFH;键盘端8255A初始化MOVR0,0;R0初始化MOVA,#90H;A口输入模式,B口输出模式MOVX@DPTR,AMOVDPTR,#BFFH;LED端8255A初始化MOVA,#80H;A、B口均为输出模式MOVX@DPTR,A`SETBTR1;开始计时KEYSCAN:ACALLIFPRESS;检查是否有按键按下JZKEYSCAN;若无按键按下,返回KEYSCAN继续等待ACALLD10MS;若有按键,延时10ms去抖动处理ACALLIFPRESS;再次检查是否有按键JZKEYSCAN;无按

3、键按下,返回KEYSCAN继续等待KEY1:MOVR2,#0FEH;使第0行为低电平MOVR5,#00H;行寄存器清0KEY2:MOVDPTR,#7FFDH;扫描行MOVA,R2MOVX@DPTR,AMOVDPTR,#7FFCH;扫描列MOVXA,@DPTRCPLA;按键对应位置为1ANLA,#0FFHJNZKEY3;该行有键按下,转KEY3MOVA,R5;无键按下,行值寄存器R5加1ADDA,#01HMOVR5,AMOVA,R2;该行无键按下,下一行置为低电平RLAMOVR2,AJBACC.0,KEY2;8行未全部扫描完,转KEY2继续扫描AJMPKEYSCAN;8行

4、已扫描完,转KEYSCAN等待下一次按键KEY3:MOVR4,A;将按键列值(按键为1)存入R4CPLAKEY4:ACALLD10MSACALLIFPRESSJNZKEY4;等待按键释放,避免按一次键重复计算CLRP1.2;关闭蜂鸣器MOVTH1,#0;定时器1清零MOVTL1,#0MOVR0,#0;计数寄存器R0清零MOVA,R2CPLAMOVR2,A;按键对应行值(按键为1)存入R2;*********************点亮LED灯LIGHT:CPLP1.1;P1.1高电平绿灯亮,低电平红灯亮MOVDPTR,#BFFCH;按键对应LED列置1MOVA,R4MO

5、V@DPTR,AMOVDPTR,#BFFDH;按键对应LED行置1MOVA,R2MOV@DPTR,A;本次亮灯完成;**********************按键对应位置1JBP1.1,GREEN;判断此次点亮的是红色LED还是绿色LEDRED:MOVA,#20H;红色LED点亮位置存储在片内RAM20H~27H单元AJMPLOGREEN:MOVA,#28H;绿色LED点亮位置存储在片内RAM28H~2FH单元LO:ADDA,R5MOVR6,AMOVA,R4ORLA,@R6;与之前的记录进行“或”处理,屏蔽已置1的位MOV@R6,A;将此次按键位置对应置1;*****

6、*****判断输赢IFWIN:CLRCSETBF0;******************每行横向检查是否已经获胜,共需3*8=24次JBP1.1,GREEN1RED1:MOVR1,#20H;R1中存检查起始地址AJMPRUN1GREEN1:MOVR1,#28HRUN1:MOVR7,#05H;每次检测5个格子,用R7控制MOVR3,#08H;总共有8行,循环8次,用R3控制MOVR5,#03H;每行需要检查3次,用R5控制MOVR4,#01H;初始位需左移次数,保存在寄存器R4中MOVR2,R4;R2中备份R4起始值WIN1:MOVA,@R1RMOV1:RLCADJNZR

7、4,RMOV1CHECK1:JCGO1CLRF0;本次检查有0,不可能已获胜,置F0为0AJMPBACK1;此次检查不可能获胜,转下一次检查GO1:RLCA;循环移位,依次检查下一位DJNZR7,CHECK1JBF0,JWIN1;检查完后F0仍为1,则一方获胜JNBF0,BACK1JWIN1:AJMPWIN;程序较长无法用JB直接跳到WIN,采用间接跳转BACK1:SETBF0;未胜利,继续检查MOVR7,#05H;R7寄存器复位MOVR4,R2;R4寄存器复位INCR4;初始位左移次数加1MOVR2,R4;即从上次开始位的下一位开始顺次

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。