




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、OK EQU 20H抢答开始标志位RING EQU 22H晌铃标志位ORG 0000HAJMP MAINORG 0003HAJMP INT0SUBORG 000BHAJMP T0INTORG 0013HAJMP INT1SUBORG 001BHAJMP T1INTORG 0040HMAIN: MOV R1,#30;初设抢答时间为 30sMOV R2,#60;初设答题时间为 60sMOV TMOD,#11H;设置未定时器/模式1MOV TH0,#0F0HMOV TL0,#0FFH越高发声频率越高,越尖MOV TH1,#3CHMOV TL1,#0B0H;50ms为一次溢出中断SETB EASETB
2、 ET0SETB ET1SETB EX0SETB EX的许四个中断,T0/T1/INT0/INT1CLR OKCLR RINGSETB TR1SETB TR0T开始就运行定时器,以开始显示FFF.口果想重新计数,重置TH1/TL1就可以了;=查询程序=MOV R4,#0BHMOV R3,#0BHACALL DISPLAY;开始抢答时候显示 FFFJB ,NEXT;dddddddACALL DELAYJB ,NEX*抖动,如果"开始键”按下就向下执行,否者跳到非法抢答查询ACALL BAR噬键发声MOV A,R1MOV R6,A;送R1->R6因为R1中保存了抢答时间SETB。噬
3、答标志位,用于COUNT只程序中判断是否查询抢答MOV R7,#01H ;读抢答键数据信号标志,这里表示只读一次有用信号MOV R3,#0AH抢答只显示计时,灭号数AJMP COUNT进入倒计时程序,"查询有效抢答的程序"在COUNT里面NEXT: JNB ,FALSE1JNB ,FALSE2JNB ,FALSE3JNB ,FALSE4JNB ,FALSE5JNB ,FALSE6JNB ,FALSE7JNB ,FALSE8AJMP START;=非法抢答处理程序=FALSE1: MOV R3,#01HAJMP ERRORFALSE2: MOV R3,#02HAJMP ERR
4、ORFALSE3: MOV R3,#03HAJMP ERRORFALSE4: MOV R3,#04HAJMP ERRORFALSE5: MOV R3,#05HAJMP ERRORFALSE6: MOV R3,#06HAJMP ERRORFALSE7: MOV R3,#07HAJMP ERRORFALSE8: MOV R3,#08HAJMP ERROR尸=INT0(抢答时间R1调整程序)=INT0SUB:MOV A,R1MOV B,#0AHDIV ABMOV R5,AMOV R4,BMOV R3,#0AHACALL DISPLA先在两个时间 LED上显示R1JNB ,INC0为+1s键,如按下跳
5、到INCOJNB ,DEC-1s键,如按下跳到 DECOJNB ,BACK确定键,如按下跳到BACKOAJMP INT0SUBINC0: MOV A,R1CJNE A,#63H,ADD0;口果不是99,R2加1,如果加到99,R1就置0,重新加起。MOV R1,#00HACALL DELAY1AJMP INT0SUBADD0: INC R1ACALL DELAY1AJMP INT0SUBDEC0: MOV A,R1JZ SETR1;口果 R1 为0, R1 就置99,DEC R1ACALL DELAY1AJMP INT0SUBSETR1: MOV R1,#63HACALL DELAY1AJMP
6、 INT0SUBBACK0: RETI尸=INT1(回答时间R调整程序)=INT1SUB:MOV A,R2MOV B,#0AHDIV ABMOV R5,AMOV R4,BMOV R3,#0AHACALL DISPLAYJNB ,INC1JNB ,DEC1JNB ,BACK1AJMP INT1SUBINC1: MOV A,R2CJNE A,#63H,ADD1MOV R2,#00HACALL DELAY1AJMP INT1SUBADD1: INC R2ACALL DELAY1AJMP INT1SUBDEC1: MOV A,R2JZ SETR2DEC R2ACALL DELAY1AJMP INT1S
7、UBSETR2: MOV R2,#63HACALL DELAY1AJMP INT1SUBBACK1: RETI;=倒计时程序(抢答倒计时和回答倒计时都跳到改程序)=REPEAT:MOV A,R2®用锦囊时重新计时MOV R6,ACLR RINGCOUNT: MOV R0,#00H重置定时器中断次数MOV TH1,#3CHMOV TL1,#0B0H重置定时器RECOUNT:MOV A,R6;R保存了倒计时的时间,之前先将抢答时间或回答时间给R6MOV B,#0AHDIV AB;除十分出个位/十位MOV 30H,A;十位存于(30H)MOV 31H,B;个位存于(31H)MOV R5,3
8、0H;取十位MOV R4,31H;取个位MOV A,R6SUBB A,#07HJNC LARGERt于5s跳到LARGERJ、于等于5s会提醒MOV A,R0CJNE A,#0AH,FULL;1即向下运行CLR RINGAJMP CHECKFULL: CJNE A,#14H,CHECK;面是1s的情况,响并显示号数并清 R0重新计SETB RINGMOV A,R6JZ QUIT计时完毕MOV R0,#00HDEC R6 二秒标志减1AJMP CHECKLARGER: MOV A,R0CJNE A,#14H,CHECK;果1s向下运行,否者跳到查"停/显示"DEC R6计时一
9、秒R6自动减1MOV R0,#00HCHECK: JNB ,QUIT 口按下停止键退出JNB OK,CHECKKR在回答倒计时才有效AJMP NEXTTCHECKK:JNB ,REPEAT断是否使用锦囊NEXTT: ACALL DISPLAY(这里起到锁抢答JB OK,ACCOU加果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数 作用 )AJMP RECOUNTACCOUT:MOV A,36HJNB ,TRUE1JNB ,TRUE2JNB ,TRUE3JNB ,TRUE4JNB ,TRUE5JNB ,TRUE6JNB ,TZ1JNB ,TZ2AJMP RECOUNTTZ1:JMP TRUE
10、7TZ2:JMP TRUE8QUIT: CLR OK口果按下了 "停止键”执行的程序CLR RINGAJMP START;=正常抢答处理程序=TRUE1: ACALL BARKMOV A,R2MOV R6,A;抢答时间 R次 R6MOV R3,#01HCLR OK因为答题的计时不再查询抢答,所以就锁了抢答AJMP COUNTTRUE2:ACALL BARKMOV A,R2MOV R6,AMOV R3,#02HCLR OKAJMP COUNTTRUE3:ACALL BARKMOV A,R2MOV R6,AMOV R3,#03HCLR OKAJMP COUNTTRUE4:ACALL BA
11、RKMOV A,R2MOV R6,AMOV R3,#04HCLR OKAJMP COUNTTRUE5:ACALL BARKMOV A,R2MOV R6,AMOV R3,#05HCLR OKAJMP COUNTTRUE6: ACALL BARKMOV A,R2MOV R6,AMOV R3,#06HCLR OKAJMP COUNTTRUE7:ACALL BARKMOV A,R2MOV R6,AMOV R3,#07HCLR OKAJMP COUNTTRUE8:ACALL BARKMOV A,R2MOV R6,AMOV R3,#08HCLR OKAJMP COUNT;=犯规抢答程序=ERROR: MO
12、V R0,#00HMOV TH1,#3CHMOV TL1,#0B0HMOV 34H,R3;犯规号数暂存与(34H)HERE: MOV A,R0CJNE A,#06H,FLAS而下运行-灭并停响CLR RINGMOV R3,#0AHMOV R4,#0AHMOV R5,#0AH;三灯全灭AJMP CHECK1R0重新计FLASH: CJNE A,#0CH,CHECK1面是的情况,响并显示号数并清SETB RINGMOV R3,34H;取回号数MOV R5,#0BHMOV R4,#0BH;显示FF和号数AJMP CHECK1CHECK1: JNB ,QUIT1ACALL DISPLAYAJMP HE
13、REQUIT1: CLR RINGCLR OKAJMP START;=显示程序=DISPLAY:MOV DPTR,#DAT®表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出MOV A,R3MOVC A,A+DPTRMOV P2,#0feHMOV P0,AACALL DELAY2MOV DPTR,#DAT2MOV A,R5MOVC A,A+DPTRMOV P2,#0fdHMOV P0,AACALL DELAY2MOV A,R4MOVC A,A+DPTRMOV P2,#0fbHMOV P0,AACALL DELAY2RETDAT1:DB 00h,06h,5bh,4fh,66h
14、,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; 第一个为零,其他与上相同,因为十位如果为零显示熄灭;=加减时间延时(起到不会按下就加N
15、个数 )=DELAY1: MOV 35H,#08HLOOP0: ACALL DISPLAYDJNZ 35H,LOOP0RET;=延时4236个机器周期(去抖动用到)=DELAY: MOV 32H,#12HLOOP: MOV 33H,#0AFHLOOP1: DJNZ 33H,LOOP1DJNZ 32H,LOOPRET;=延时4236个机器周期(显示用到)=LOOP3: MOV 33H,#1EHMOV A,R7 ;每隔6070个机器周期读一次 P1 口,全为1时为无效数据,继续读,有一个不为1时,转 到正常抢答处理JNZ AAAA1 没读到有效数据时继续转到;AAAA1LOOP2: DJNZ 33H,LOOP2DJNZ 32H,LOOP3RET;=读抢答按键数据口程序=; 由于在读抢答数据口的时候,单片机首先进入倒计时程序,再调用显示程序,最后才检测按键口;然而在检测按键口时动态扫描要调用三次(4ms)延时程序.这样就会导致读数据口出现滞后,造成1号优先最高.8号最低.; 故采用在延时子程序中加了读数据口程序.保证了灵敏度和可靠性AAAA1: MOV A,P1CJNE A,#0FFH,AA1当不全为1时的数据为有效数据AA0: MOV 36H,A ;将有效数据送到36H 暂存AJMP L
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四年级信息技术上册 第一单元 电子作文 1.2 设置文本格式教学设计2 浙江摄影版
- 五年级品德与社会下册 我们的地球村教学设计 新人教版
- 一年级道德与法治上册 第三单元 我爱我家 11《把我的爱传给大家》教学设计设计2 鄂教版
- 人教版二年级数学上册全册教案3
- 质量改进工作总结
- 全国人教版信息技术八年级下册第一单元第2课《改变线型和颜色》教学设计
- 神经病学脑血管疾病护理
- 过年手抄报课件
- 四年级下册科学教学设计-认识光|青岛版
- 高中数学教案在小学教育中的应用
- 《基于作业成本法的S公司物流成本分析研究》8300字(论文)
- 浙江省温州市重点中学2025届高三二诊模拟考试英语试卷含解析
- DB37T 4516-2022 高速公路边坡光伏发电工程技术规范
- 菏泽学院无机化学(专升本)复习题
- 虚实互动:人机协同探秘知到智慧树章节答案
- 2023年云上贵州大数据有限公司社会招聘笔试真题
- 工业自动化设备安装调试方案
- 2024年四川省公务员考试《行测》真题及答案解析
- 小学项目式学习培训
- 委托加工灯具合同模板
- 加油站变更管理制度
评论
0/150
提交评论