单片机的多功能抢答器设计 精品Word文档格式.docx

上传人:b****1 文档编号:15346598 上传时间:2022-10-29 格式:DOCX 页数:16 大小:224.64KB
下载 相关 举报
单片机的多功能抢答器设计 精品Word文档格式.docx_第1页
第1页 / 共16页
单片机的多功能抢答器设计 精品Word文档格式.docx_第2页
第2页 / 共16页
单片机的多功能抢答器设计 精品Word文档格式.docx_第3页
第3页 / 共16页
单片机的多功能抢答器设计 精品Word文档格式.docx_第4页
第4页 / 共16页
单片机的多功能抢答器设计 精品Word文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

单片机的多功能抢答器设计 精品Word文档格式.docx

《单片机的多功能抢答器设计 精品Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机的多功能抢答器设计 精品Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

单片机的多功能抢答器设计 精品Word文档格式.docx

P3口除了一般I/O线的功能外,还具有更为重要的第二功能,p3.0~p3.4口接五个按钮,p3.6口(外部数据存储器写选通)接一个报警器。

3.2显示模块设计

显示模块用的是7SEG-MPX4CC,1、3、4口是用来控制数码管显示数的。

本数码管采用的是动态显示。

图3.27SEG-MPX4CC图

4软件流程设计

4.1系统流程图

图4.1系统流程图

4.2倒计时程序流程图

图4.2倒计时流程图

4.3显示程序流程图

图4.3显示程序流程图

4.4四路抢答器程序

org0

okequ20h

requ22h

ljmpstart

org0003h

ljmpinterrupted

org000bh

ljmpt0int

org0013h

ljmpint1sub

org001bh

ljmpt1int

org0040h

start:

movr1,#10

movr2,#30

movtmod,#11h

movth0,#0f0h

movtl0,#0ffh

movth1,#3ch

movtl1,#0b0h

setbea

setbet0

setbet1

setbex0

setbex1

clrok

clrr

setbtr1

setbtr0

inquire:

movr5,#0bh;

查询

movr4,#0bh

movr3,#0bh

acalldisplay;

未开始抢答时候显示FFF

jbp3.0,key

acalldelay

jbp3.0,key;

去抖动,如果"

开始键"

按下就向下执行,否者跳到非法抢答查询

acallbark

mova,r1

movr6,a

setbok

movr7,#01h;

读抢答键数据信号标志,这里表示只读一次有用信号

movr3,#0ah;

抢答只显示计时,灭号数

ljmpcount

key:

jnbp1.0,f1

jnbp1.1,f2

jnbp1.2,f3

jnbp1.3,f4

ljmpinquire

f1:

movr3,#01h;

非法抢答

ljmperror

f2:

movr3,#02h

f3:

movr3,#03h

ljmperror

f4:

movr3,#04h

ljmperror

interrupted:

mova,r1;

抢答时间R1调整

movb,#0ah

diva

movr5,a

movr4,b

movr3,#0ah

acalldisplay

jnbp3.4,inc0

jnbp3.5,dec0

jnbp3.1,back0

ljmpinterrupted

inc0:

mova,r1

cjnea,#63h,add0;

如果不是99,R2加1,如果加到99,R1就置0,重新加起。

movr1,#00h

acalldelay1

add0:

incr1

ljmpinterrupted

dec0:

jzsetr1;

如果R1为r,R1就置99,

decr1

acalldelay1

setr1:

movr1,#63h

back0:

reti

int1sub:

mova,r2;

回答时间R2调整

movb,#0ah

divab

movr5,a

movr4,b

movr3,#0ah

acalldisplay

jnbp3.4,inc1

jnbp3.5,dec1

jnbp3.1,back1

ljmpint1sub

inc1:

mova,r2

cjnea,#63h,add1

movr2,#00h

ljmpint1sub

add1:

incr2

dec1:

jzsetr2

decr2

setr2:

movr2,#63h

back1:

repeat:

mova,r2;

倒计时

movr6,a

clrr

count:

movr0,#00h

movth1,#3ch

movtl1,#0b0h

recount:

mova,r6;

r6保存了倒计时的时间,之前先将抢答时间或回答时间给R6

mov30h,a

mov31h,b

movr5,30h

movr4,31h

mova,r6

subba,#07h

jnclarger;

大于5s跳到larger,小于等于5s会提醒

mova,r0

cjnea,#0ah,full;

1s中0.5s向下运行

clrr

ljmpcheck

full:

cjnea,#14h,check;

下面是1s的情况,响并显示号数并清R0,重新计

setbr

mova,r6

jzquit;

计时完毕

movr0,#00h

decr6;

一秒标志减1

larger:

mova,r0

如果1s向下运行,否者跳到查"

停/显示"

计时一秒R6自动减1

check:

jnbp3.1,quit;

如按下停止键退出

jnbok,checkk;

只在回答倒计时才有效

ljmpkeyt

checkk:

jnbp3.0,repeat;

判断是否使用锦囊

keyt:

jbok,accout;

如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数

ljmprecount

accout:

mova,36h

jnbacc.0,true1

jnbacc.1,true2

jnbacc.2,true3

jnbacc.3,true4

tz1:

jmptrue3

tz2:

jmptrue4

quit:

clrok;

如果按下了"

停止键"

执行的程序

clrr

ljmpinquire

true1:

acallbark;

开始抢答

movr6,a

movr3,#01h

因为答题的计时不再查询抢答,所以就锁了抢答

ljmpcount

true2:

acallbark

movr6,a

movr3,#02h

clrok

ljmpcount

true3:

movr3,#03h

true4:

clrok

error:

movr0,#00h;

犯规抢答

mov34h,r3

here:

cjnea,#06h,flash;

0.3s向下运行->

灭并停响

movr4,#0ah

movr5,#0ah;

三灯全灭

ljmpcheck1

flash:

cjnea,#0ch,check1;

下面是0.8s的情况,响并显示号数并清R0,重新计

movr3,34h;

取回号数

movr5,#0bh

movr4,#0bh;

显示FF和号数

check1:

jnbp3.1,quit1

acalldisplay

ljmphere

quit1:

clrok

ljmpstart

display:

movdptr,#dat1;

显示程序

mova,r3

movca,@a+dptr

movp2,#0feh

movp0,a

acalldelay2

movdptr,#dat2

mova,r5

movca,@a+dptr

movp2,#0fdh

movp0,a

acalldelay2

mova,r4

movp2,#0fbh

ret

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1