求基于MCS-51系列单片机AT89C51,设计一个8路抢答器的程序,C语言和汇编语言都可请发到183767742@qq.com

邮箱错了 183767743@qq.com,谢谢

ORG 0000H
AJMP MAIN
ORG 0003H
AJMP INT0SUB
ORG 000BH
AJMP T0INT
ORG 001BH
AJMP T1INT
OK EQU 20H ; 抢答开始标志位
RING EQU 22H ; 响铃标志位
ORG 0040H
MAIN: MOV R1,#0FH; 初设抢答时间为15s
MOV R2,#0AH; 初设答题时间为10s
MOV TMOD,#11H; 设置未定时器/模式1
MOV TH0,#0F0H
MOV TL0,#0FFH; 越高发声频率越高,越尖
MOV TH1,#3CH
MOV TL1,#0B0H; 50ms为一次溢出中断
SETB EA
SETB ET0
SETB ET1
SETB EX0
SETB EX1; 允许四个中断,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 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: ACALL BARK; 按键发声
MOV R3,#01H
AJMP ERROR
FALSE2: ACALL BARK
MOV R3,#02H
AJMP ERROR
FALSE3: ACALL BARK
MOV R3,#03H
AJMP ERROR
FALSE4: ACALL BARK
MOV R3,#04H
AJMP ERROR
FALSE5: ACALL BARK
MOV R3,#05H
AJMP ERROR
FALSE6: ACALL BARK
MOV R3,#06H
AJMP ERROR
FALSE7: ACALL BARK
MOV R3,#07H
AJMP ERROR
FALSE8: ACALL BARK
MOV R3,#08H
AJMP ERROR
//倒计时程序(包括有效抢答程序):
COUNT: MOV R0,#00H; 重置定时器中断次数
MOV TH1,#3CH
MOV TL1,#0B0H; 重置定时器
RECOUNT: MOV A,R6; R6保存了倒计时的时间
MOV B,#0AH
DIV AB; 除十分出个位/十位
MOV 30H,A; 十位存于(30H)
MOV 31H,B; 个位存于(31H)
MOV R5,30H ; 取十位
MOV R4,31H ; 取个位
MOV A,R6
CLR C
SUBB A,#07H
JNC LARGER ;大于5s跳到LARGER,小于等于5s会提醒
MOV A,R0
CJNE A,#0AH,FULL;1s中0.5s向下运行
CLR RING
AJMP CHECK
FULL: CJNE A,#14H,CHECK ; 1s时,响并显示号数并清R0,重新计时
SETB RING
MOV A,R6
JZ QUIT ; 计时完毕
MOV R0,#00H
DEC R6 ; 一秒标志减1
AJMP CHECK
LARGER: MOV A,R0
CJNE A,#14H,CHECK ; 如果1s向下运行,否者跳到查"停/显示"
DEC R6; 计时一秒R6自动减1
MOV R0,#00H
CHECK: JNB P3.1,QUIT; 如按下停止键退出
ACALL DISPLAY
JNB P1.0,TRUE1
JNB P1.1,TRUE2
JNB P1.2,TRUE3
JNB P1.3,TRUE4
JNB P1.4,TRUE5
JNB P1.5,TRUE6
JNB P1.6,TRUE7
JNB P1.7,TRUE8
AJMP RECOUNT
QUIT: CLR OK ; 如果按下了"停止键"重新回到开始
CLR RING
ACALL BARK
AJMP START
//正常抢答处理程序:
TRUE1: ACALL BARK; 按键发声
MOV A,R2
MOV R6,A; 抢答时间R2送R6
MOV R3,#01H
CLR OK;
AJMP LOOP2
TRUE2:ACALL BARK;
MOV A,R2
MOV R6,A
MOV R3,#02H
CLR OK
AJMP LOOP2
TRUE3:ACALL BARK;
MOV A,R2
MOV R6,A
MOV R3,#03H
CLR OK
AJMP LOOP2
TRUE4:ACALL BARK;
MOV A,R2
MOV R6,A
MOV R3,#04H
CLR OK
AJMP LOOP2
TRUE5: ACALL BARK;
MOV A,R2
MOV R6,A
MOV R3,#05H
CLR OK
AJMP LOOP2
TRUE6: ACALL BARK;
MOV A,R2
MOV R6,A
MOV R3,#06H
CLR OK
AJMP LOOP2
TRUE7: ACALL BARK;
MOV A,R2
MOV R6,A
MOV R3,#07H
CLR OK
AJMP LOOP2
TRUE8: ACALL BARK;
MOV A,R2
MOV R6,A
MOV R3,#08H
CLR OK
AJMP LOOP2
LOOP2: AJMP DISPLAY ;抢答后停止计时,等待返回
SETB RING
JNB P3.1 , QUIT
AJMP LOOP2
//犯规抢答程序:
ERROR: SETB RING ;犯规响铃
MOV R5,#0BH
MOV R4,#0BH; 显示FF和犯规号数
LOOP3: ACALL DISPLAY
JNB P3.1 , QUIT1; 等待"停止"键按下
AJMP LOOP3
QUIT1: CLR RING
CLR OK
AJMP START
//显示程序:
DISPLAY:MOV DPTR,#DAT1; 查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出
MOV A,R5
MOVC A,@A+DPTR
MOV P2,#01H
MOV P0,A
ACALL DELAY
MOV DPTR,#DAT2
MOV A,R4
MOVC A,@A+DPTR
MOV P2,#02H
MOV P0,A
ACALL DELAY
MOV A,R3
MOVC A,@A+DPTR
MOV P2,#04H
MOV P0,A
ACALL DELAY
RET
DAT1:DB 00H,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H
;"灭","1","2","3","4","5","6","7","8","9","灭","F"
DAT2:DB 3FH, 06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H
DELAY1: MOV 35H,#08H
LOOP0: ACALL DISPLAY
DJNZ 35H,LOOP0
RET
//延时(显示和去抖动用到):
DELAY: MOV 32H,#12H
LOOP: MOV 33H,#0AFH
LOOP1: DJNZ 33H,LOOP1
DJNZ 32H,LOOP
RET

//发声程序:
BARK: SETB RING
ACALL DELAY1
ACALL DELAY1
ACALL DELAY1
ACALL DELAY1
CLR RING; 按键发声
RET

//INT0(抢答时间R1调整程序):
INT0SUB:MOV A,R1
MOV B,#0AH
DIV AB
MOV R5,A
MOV R4,B
MOV R3,#0AH
ACALL DISPLAY;先在两个时间LED上显示R1
JNB P3.2,INC0; P3.2为+1s键,如按下跳到INCO
JNB P3.3,DEC0; P3.3为-1s键,如按下跳到DECO
JNB P3.4,BACK0; P3.4为确定键,如按下跳到BACKO
AJMP INT0SUB
INC0: MOV A,R1
CJNE A,#63H,ADD0; 如果不是99,R2加1,如果加到99了,R1就置0,重新加起
MOV R1,#00H
ACALL DELAY1
AJMP INT0SUB
ADD0: INC R1
ACALL DELAY1
AJMP INT0SUB
DEC0: MOV A,R1
JZ SETR1;如果R1为0, R1就置99,
DEC R1
ACALL DELAY1
AJMP INT0SUB
SETR1: MOV R1,#63H
ACALL DELAY1
AJMP INT0SUB
BACK0: RETI
//TO溢出中断(响铃程序):
T0INT:MOV TH0,#0ECH
MOV TL0,#0FFH
JNB RING,OUT
CPL P3.6 ; RING标志位为1时候P3.6口不短取反使喇叭发出一定频率的声音
OUT: RETI
//T1溢出中断(计时程序):
T1INT: MOV TH1,#3CH
MOV TL1,#0B0H
INC R0
RETI
END
设计图发你邮箱
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-12-20
。。已发

编写一个AT89C52单片机控制四相单四拍步进电机汇编程序,急用...
1实验任务基于MCS-51系列单片机AT89C51,设计一个控制步进电动机的控制装置。2设计要求:1)采用单片机控制一个小功率四相四拍的步进电机工作,步进电机步距为1.5度,最大相电流100mA... 1 实验任务基于MCS-51系列单片机AT89C51,设计一个控制步进电动机的控制装置。2 设计要求:1) 采用单片机控制一个小功率四相四拍的...

不同单片机的指令系统不一样吗?
1.型号不同,但是核心一样的话,这样的单片机指令系统是一样的。比如基于MCS-51核心的单片机AT89C51、AT89S52、SST89C58、W77E058、C8051F020等,都是一样的指令系统。但是有点例外,比如AVR核心单片机,对于AT90、Attiny和Atmega系列都有基础的79条指令,后面随着单片机的发展而出现扩展指令集,比如Attiny...

电子信息工程毕业论文
857. 基于VHDL语言的数字密码锁控制电路的设计 858. 基于单片机的超声波测距系统的设计 859. 基于单片机的八路抢答器设计 860. 基于单片机的安全报警器 861. 基于SPCE061A的易燃易爆气体监测仪设计 862. 基于CPLD的LCD显示设计 863. 基于单片机的电话远程控制家用电器系统设计 864. 基于单片机的交通信号灯控制电路设...

大学PLC课程设计一般有哪些题目?
1.基于labVIEW虚拟滤波器的设计与实现 2.双闭环直流调速系统设计 3.单片机脉搏测量仪 4.单片机控制的全自动洗衣机毕业设计论文 5.FPGA电梯控制的设计与实现 6.恒温箱单片机控制 7.基于单片机的数字电压表 8.单片机控制步进电机毕业设计论文 9.函数信号发生器设计论文 10.110KV变电所一次系统设计 11.报警门铃设计论文...

本科毕业论文能抄袭么?
38.红外报警器设计与实现 39.开关稳压电源设计 40.基于MCS51单片机温度控制毕业设计论文 41.步进电动机竹竿舞健身娱乐器材 42.单片机控制步进电机 毕业设计论文 43.单片机汽车倒车测距仪 44.基于单片机的自行车测速系统设计 45.水电站电气一次及发电机保护 46.基于单片机的数字显示温度系统毕业设计论文 47.语音电子门锁...

六位数码管时钟
38.红外报警器设计与实现 39.开关稳压电源设计 40.基于MCS51单片机温度控制毕业设计论文 41.步进电动机竹竿舞健身娱乐器材 42.单片机控制步进电机 毕业设计论文 43.单片机汽车倒车测距仪 44.基于单片机的自行车测速系统设计 45.水电站电气一次及发电机保护 46.基于单片机的数字显示温度系统毕业设计论文 47....

...用汇编语言编程和Proteus画图用AT89C51不加7447
没有用外部中断,我嫌麻烦,图上得LED我也只画了2个,麻烦,也不太理解你的意思,将就下,下面是程序:LEDEQUP0 SMGEQUP2 KEY0EQU0X20 ORG0 MAIN:MOVKEY0,#0 MOVLED,#0X03 KEYSCAN:MOVA,P3 CJNEA,#0XFF,KEY_1 AJMPKEYSCAN RET KEY_1:CJNEA,#0XFE,KEY_2 MOVKEY0,#0X01 ACALLDISPLAY...

单片机课程设计:交通灯控制!
38.红外报警器设计与实现 39.开关稳压电源设计 40.基于MCS51单片机温度控制毕业设计论文 41.步进电动机竹竿舞健身娱乐器材 42.单片机控制步进电机 毕业设计论文 43.单片机汽车倒车测距仪 44.基于单片机的自行车测速系统设计 45.水电站电气一次及发电机保护 46.基于单片机的数字显示温度系统毕业设计论文 47.语音电子门锁...

跪求单片机课程设计 要完全呦
1.3 8051程序开发测试平台 1.4 使用免费汇编编译器 1.5 89CXX烧录模拟器操作实例 1.6 自制8051微电脑单板IO51 1.7 IO51操作实例 1.8 以Windows98 工作模式结合DOS模式来执行 第2章 8051单片机课程设计中的基本软硬件设计 2.1 8051各种基本的硬件设计 2.2 工作指示灯LED 2.3 ...

运料小车自动控制组态仿真
1.基于labVIEW虚拟滤波器的设计与实现 2.双闭环直流调速系统设计 3.单片机脉搏测量仪 4.单片机控制的全自动洗衣机毕业设计论文 5.FPGA电梯控制的设计与实现 6.恒温箱单片机控制 7.基于单片机的数字电压表 8.单片机控制步进电机毕业设计论文 9.函数信号发生器设计论文 10.110KV变电所一次系统设计 11.报警门铃设计论文...

相似回答