c51抢答器程序汇编语言,c51单片机汇编语言单片机八位抢答器程序

这篇博客介绍了如何使用C51单片机汇编语言编写抢答器程序,包括初始化设置、中断处理、时间调整和倒计时程序。通过设定不同中断服务子程序,实现了抢答时间和答题时间的调节,并在抢答过程中进行非法抢答检测。同时,程序还包含了显示、按键处理以及发声功能。
摘要由CSDN通过智能技术生成

OK EQU 20H

RING EQU 22H

ORG 0000H

AJMP MAIN

ORG 0003H

AJMP INT0SUB

ORG 000BH

AJMP T0INT

ORG 0013H

AJMP INT1SUB

ORG 001BH

AJMP T1INT

ORG 0040H

MAIN:MOV R1,#30;初设抢答时间为 30s

MOV R2,#60;初设答题时间为 60s

MOV TMOD,#11H;设置定时器工作于方式 1

MOV TH0,#0FH

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

MOV TH1,#3CH

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

SETB EA

SETB ET0

SETB ET1

SETB EX0

SETB EX1;允许 4个中断, T0/T1/INT0/INT1

CLR OK

CLR RING

SETB TR1

SETB TR0;一开始就运行定时器,以开始显示 FFF ,若要重新计数,重置 TH1/TL1就 行

;=====查询程序 =======

START:MOV R5,#0BH

MOV R4,#0BH

MOV R3,#0BH

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

JB P3.0,NEXT

ACALL DELAY

JB P3.0,NEXT;去抖动,如果“开始”按下就向下执行,否则跳到非法抢答查询 ACALL BARK;按键发声

MOV A,R1

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

SETB OK;抢答标志位,勇于 COUNT 程序中半段是否查询抢答

MOV R7,#01H;读抢答键数据信号标志,这里表示只读一次有用信号

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

AJMP COUNT;进入倒计时程序, “查询有效抢答的程序”在 COUNT 里面 NEXT:JNB P1.0,FALSE1

JNB P1.1,FALSE2

JNB P1.2,FALSE3

JNB P1.3,FALSE4

JNB P1.4,FALSE5

JNB P1.5,FALSE6

JNB P1.6,FALSE7

JNB P1.7,FALSE8

AJMP START

;====非法抢答处理程序 =====

FALSE1:MOV R3,#01H

AJMP ERROR

FALSE2:MOV R3,#02H

AJMP ERROR

FALSE3:MOV R3,#03H

AJMP ERROR

FALSE4:MOV R3,#04H

AJMP ERROR

FALSE5:MOV R3,#05H

AJMP ERROR

FALSE6:MOV R3,#06H

AJMP ERROR

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值