c51抢答器程序汇编语言,基于51单片机的汇编语言八路抢答器程序+Proteus仿真

这是一个基于51单片机的八路抢答器程序,使用汇编语言编写,并配合Proteus进行仿真。程序详细定义了抢答开始标志、响铃标志以及按键数据地址,包含了中断设置、定时器配置和抢答计时等功能,还实现了按键响应和LED显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OK EQU 20H                       ;抢答开始标志位

RING EQU 22H                     ;响铃标志位

DATA0 EQU 36H                    ;抢答按键口数据存放地址

ORG 0000H

AJMP MAIN

ORG 0003H

AJMP INTT0

ORG 000BH

AJMP T0INT

ORG 001BH

AJMP T1INT

ORG 0040H

MAIN:   MOV R1,#14H                       ;初设抢答时间为20s

MOV R2,#1EH                     ;初设答题时间为30s

MOV 38H,#3CH                      ;启用锦囊时间从60s倒计时

MOV TMOD,#11H                    ;设置未定时器/模式1

MOV TH0,#0F0H

MOV TL0,#0FFH                    ;越高发声频率越高,越尖

MOV TH1,#3CH

MOV TL1,#0B0H                    ;50ms为一次溢出中断

SETB EA

SETB ET0

SETB ET1                         ;允许二个中断,T0/T1

CLR OK

CLR RING

SETB TR1

SETB TR0                        ;一开始就运行定时器,以开始显示FFF.如果想重新计数,重置TH1/TL1就可以了

START:   MOV DATA0,#0FFH                 ;初始化

MOV R5,#0BH

MOV R4,#0BH

MOV R3,#0BH

ACALL DISPLAY                   ;未开始抢答时候显示FFF

JNB P3.3,SELSUB0

JNB P3.4,TZ3                    ;倒计时调整

JB P3.0,NEXT

ACALL DELAY

JB P3.0,NEXT                    ;去抖动,如果"开始键"按下就向下执行,否者跳到非法抢答查询

SETB EX0                        ;开放INT0

ACALL BARK                      ;按键发声

MOV A,R1

MOV R6,A                    ;送R1->R6,因为R1中保存了抢答时间

SETB OK                         ;抢答标志位,在使用锦囊时用作判断是抢答倒计时还是回答倒计时

MOV R3,#0AH                     ;抢答只显示计时,灭号数

AJMP COUNT                      ;进入倒计时程序,"查询有效抢答的程序"在COUNT里面

NEXT:    JNB P1.0,FALSE1

JNB P1.1,FALSE2

JNB P1.2,FALSE3

JNB P1.3,FA

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值