找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3042|回复: 0
打印 上一主题 下一主题
收起左侧

51单片机8路抢答器部分程序

[复制链接]
跳转到指定楼层
楼主
ID:272936 发表于 2018-1-7 21:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ORG          0000H
AJMP        MAIN
ORG          0003H                         ;INT0中断入口
AJMP       INT0SUB
ORG         000BH                         ;T0中断入口
AJMP        T0INT
ORG          0013H                         ;INT1中断入口
AJMP        INT1SUB           
ORG          001BH                         ;T1中断入口
AJMP        T1INT
ORG          0100H                         ;
;主程序;
MAI N :                                        ;主要功能是对系统进行初始化
MOV         R1,#0AH                     ;初设抢答时间10S
MOV         R2,#1EH                     ;初设回答时间30S
MOV         TMOD,#11H              ;定时器TOT1均工作在方式1
MOV         TH0,#0F0H                ;定时器TO 賦初值
MOV         TL0,#0FFH
MOV         TH1,#3CH                  ;定时器T1賦初值
MOV         TL1,#0B0H
SETB                   EA                                ;打开中断寄存器总开关
SETB                   ET0                              ;打开T0中断开关
SETB                   ET1                              ;打开T1中断开关
SETB                   EX0                              ;打开INT0中断开关
SETB                   EX1                              ;INT1中断开关
CLR           OK
CLR           RING
SETB                   TR1                              ;T1开始定时
SETB                   TR0                              ;T0开始定时
;非法抢答查询程序;
FEIFA:
JNB           P1.0,FEIFA1               ;查询1号选手是否发生抢答
JNB           P1.1,FEIFA2               ;查询2 号选手是否发生抢答
JNB           P1.2,FEIFA3               ;查询3号选手是否发生抢答
JNB           P1.3,FEIFA4               ;查询4 号选手是否发生抢答
JNB           P1.4,FEIFA5               ;查询5 号选手是否发生抢答
JNB           P1.5,FEIFA6               ;查询6 号选手是否发生抢答
JNB           P1.6,FEIFA7               ;查询7 号选手是否发生抢答
JNB           P1.7,FEIFA8               ;查询8 号选手是否发生抢答
AJMP        START
FEIFA1:                                          
MOV         R3,#01H                     ;将犯规号送到R3
AJMP        ERROR                        ;跳转到犯规处理程序
FEIFA2 :   
MOV         R3,#02H
AJMP        ERROR
FEIFA3 :   
MOV         R3,#03H
AJMP        ERROR
FEIFA4 :
MOV         R3,#04H
AJMP        ERROR
FEIFA5 :
MOV         R3,#05H
AJMP        ERROR
FEIFA6:
MOV         R3,#06H
AJMP        ERROR
FEIFA7 :
MOV         R3,#07H
AJMP        ERROR
FEIFA8 :
MOV         R3,#08H
AJMP        ERROR
;犯规处理程序;
ERROR:
MOV         R0,#00H
MOV         TH1,#3CH                  ;T1重新进行赋值
MOV         TL1,#0B0H
MOV         34H,R3                       ;犯规号数暂存与34H
; 指示灯闪烁处理程序;
HERE:
MOV         A,R0
CJNE                  A,#06H, Flash
CLR           RING
MOV         R3,#0AH
MOV         R4,#0AH
MOV         R5,#0AH                     ;三个灯全灭
AJMP        CHECK1
Flash:
CJNE                  A,#0CH, CHECK1
SETB                   RING
MOV         R0,#00H
MOV         R3,#34H
MOV         R4,#0BH
MOV         R5,#0BH                    ;显示FF和号数
AJMP        CHECK1
CHECK 1:
JNB           P3.1QUIT1
MOV         R3,34H
ACALL       DISPLAY
AJMP        HERE
QUIT1:     
CLR           RING
CLR           OK
AJMP        START
;*显示子程序*;
DISPLAY:
MOV         DPTR,#DAT1
MOV         A,R3
MOVC      A,@A+DPTR
MOV         P2,#0FBH
MOV         P0,A
ACALL       DELAY2
MOV         DPTR,#DAT2
MOV         A,R5
MOVC      A,@A+DPTR
MOV         P2,#0FEH
MOV         P0,A
ACALL       DELAY2
MOV         A,R4
MOVC      A,@A+DPTR
MOV         P2,#OFDH
MOV         P0,A
ACALL       DELAY2
RET
DaT1:DB 0FFH,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H,0FFH,8EH
DAT2:DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H,0FFH,8EH
;正常抢答处理程序;
TRUE1:
ACALL       BAOJING
MOV         A, R2                                    
MOV         R6,A                                      ;抢答时间送到R6
MOV         R3, #01H
CLR           OK              ;答题时间,锁抢答
AJMP        COUNT
TRUE2:
ACALL       BAOJING
MOV         A,R2
MOV         R6,A
MOV         R3,#02H
CLR           OK
AJMP        COUNT
TRUE3 :
ACALL       BAOJING
MOV         A,R2
MOV         R6,A
MOV         R3,#03H
CLR           OK
AJMP        COUNT
TRUE4 :
ACALL       BAOJING
MOV         A,R2
MOV         R6,A
MOV         R3,#04H
CLR           OK
AJMP        COUNT
TRUE5 :
ACALL       BAOJING
MOV         A,R2
MOV         R6,A
MOV         R3,#05H
CLR           OK
AJMP        COUNT
TRUE6 :
ACALL       BAOJING
MOV         A,R2
MOV         R6,A
MOV         R3,#06H
CLR           OK
AJMP        COUNT
TRUE7 :
ACALL       BAOJING
MOV         A,R2
MOV         R6,A
MOV         R3,#07H
CLR           OK
AJMP        COUNT
TRUE8 :
ACALL    BAOJING
MOV      A,R2
MOV      R6,A
MOV      R3,#08H
CLR        OK
AJMP     COUNT
;报警处理程序;
BAOJING :
SETB                   RING         
ACALL       DELAY1
ACALL       DELAY1
CLR           RING
RET
END

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表