基于不容第二位加

上传人:ldj****22 文档编号:29821186 上传时间:2018-01-25 格式:DOC 页数:10 大小:52.88KB
返回 下载 相关 举报
基于不容第二位加_第1页
第1页 / 共10页
基于不容第二位加_第2页
第2页 / 共10页
基于不容第二位加_第3页
第3页 / 共10页
基于不容第二位加_第4页
第4页 / 共10页
基于不容第二位加_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《基于不容第二位加》由会员分享,可在线阅读,更多相关《基于不容第二位加(10页珍藏版)》请在金锄头文库上搜索。

1、 ORG 0000HAJMP MAINORG 0003HAJMP INT0SUBORG 000BHAJMP T0INTORG 001BHAJMP T1INTOK EQU 20H ; 抢答开始标志位RING EQU 22H ; 响铃标志位ORG 0040HMAIN: MOV R1,#0FH; 初设抢答时间为15sMOV R2,#0AH; 初设答题时间为10sMOV TMOD,#11H; 设置未定时器/模式1MOV TH0,#0F0HMOV TL0,#0FFH; 越高发声频率越高,越尖MOV TH1,#3CHMOV TL1,#0B0H; 50ms为一次溢出中断SETB EASETB ET0SETB

2、 ET1SETB EX0SETB EX1; 允许四个中断,T0/T1/INT0/INT1CLR OKCLR RINGSETB TR1SETB TR0; 一开始就运行定时器,以开始显示FFF.如果想重新计数,重置TH1/TL1就可以了查询程序:START: MOV R5,#0BHMOV R4,#0BHMOV R3,#0BHACALL DISPLAY; 未开始抢答时候显示FFFJB P3.0,NEXTACALL DELAYJB P3.0,NEXT;去抖动,如果开始键按下就向下执行,否者跳到非法抢答查询ACALL BARK;按键发声MOV A,R1MOV R6,A; 送R1-R6,因为R1中保存了抢

3、答时间SETB OK; 抢答标志位,用于COUNT只程序中判断是否查询抢答MOV R3,#0AH; 抢答只显示计时,灭号数AJMP COUNT;进入倒计时程序,查询有效抢答的程序在COUNT里面NEXT: JNB P1.0,FALSE1JNB P1.1,FALSE2JNB P1.2,FALSE3JNB P1.3,FALSE4JNB P1.4,FALSE5JNB P1.5,FALSE6JNB P1.6,FALSE7JNB P1.7,FALSE8AJMP START非法抢答处理程序:FALSE1: ACALL BARK; 按键发声MOV R3,#01HAJMP ERRORFALSE2: ACALL

4、 BARKMOV R3,#02H AJMP ERRORFALSE3: ACALL BARKMOV R3,#03HAJMP ERRORFALSE4: ACALL BARKMOV R3,#04HAJMP ERRORFALSE5: ACALL BARKMOV R3,#05HAJMP ERRORFALSE6: ACALL BARKMOV R3,#06HAJMP ERRORFALSE7: ACALL BARKMOV R3,#07HAJMP ERRORFALSE8: ACALL BARKMOV R3,#08HAJMP ERROR倒计时程序(包括有效抢答程序):COUNT: MOV R0,#00H; 重置定

5、时器中断次数MOV TH1,#3CHMOV TL1,#0B0H; 重置定时器RECOUNT: MOV A,R6; R6保存了倒计时的时间MOV B,#0AHDIV AB; 除十分出个位/十位MOV 30H,A; 十位存于(30H)MOV 31H,B; 个位存于(31H)MOV R5,30H ; 取十位 MOV R4,31H ; 取个位MOV A,R6CLR CSUBB A,#07HJNC LARGER ;大于5s跳到LARGER,小于等于5s会提醒MOV A,R0CJNE A,#0AH,FULL;1s中0.5s向下运行CLR RINGAJMP CHECKFULL: CJNE A,#14H,CH

6、ECK ; 1s时,响并显示号数并清R0,重新计时SETB RINGMOV A,R6JZ QUIT ; 计时完毕MOV R0,#00HDEC R6 ; 一秒标志减1AJMP CHECKLARGER: MOV A,R0CJNE A,#14H,CHECK ; 如果1s向下运行,否者跳到查停/显示DEC R6; 计时一秒R6自动减1MOV R0,#00HCHECK: JNB P3.1,QUIT; 如按下停止键退出ACALL DISPLAYJNB P1.0,TRUE1 JNB P1.1,TRUE2JNB P1.2,TRUE3JNB P1.3,TRUE4JNB P1.4,TRUE5JNB P1.5,TR

7、UE6JNB P1.6,TRUE7 JNB P1.7,TRUE8AJMP RECOUNTQUIT: CLR OK ; 如果按下了停止键重新回到开始CLR RINGACALL BARKAJMP START正常抢答处理程序:TRUE1: ACALL BARK; 按键发声MOV A,R2MOV R6,A; 抢答时间R2送R6MOV R3,#01HCLR OK; AJMP LOOP2TRUE2:ACALL BARK;MOV A,R2MOV R6,AMOV R3,#02HCLR OKAJMP LOOP2TRUE3:ACALL BARK;MOV A,R2MOV R6,AMOV R3,#03HCLR OKA

8、JMP LOOP2TRUE4:ACALL BARK;MOV A,R2MOV R6,AMOV R3,#04H CLR OKAJMP LOOP2TRUE5: ACALL BARK;MOV A,R2MOV R6,AMOV R3,#05HCLR OKAJMP LOOP2TRUE6: ACALL BARK;MOV A,R2MOV R6,AMOV R3,#06HCLR OKAJMP LOOP2TRUE7: ACALL BARK;MOV A,R2MOV R6,AMOV R3,#07HCLR OKAJMP LOOP2TRUE8: ACALL BARK;MOV A,R2MOV R6,AMOV R3,#08HCL

9、R OKLOOP2: AJMP DISPLAY ;抢答后停止计时,等待返回SETB RINGJNB P3.1 QUITAJMP LOOP2犯规抢答程序:ERROR: SETB RING ;犯规响铃MOV R5,#0BHMOV R4,#0BH; 显示FF和犯规号数LOOP3: ACALL DISPLAY JNB P3.1 QUIT1; 等待“停止”键按下AJMP LOOP3 QUIT1: CLR RINGCLR OKAJMP START显示程序:DISPLAY:MOV DPTR,#DAT1; 查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出MOV A,R5MOVC A,A+DPTR

10、MOV P2,#01HMOV P0,AACALL DELAYMOV DPTR,#DAT2MOV A,R4MOVC A,A+DPTRMOV P2,#02HMOV P0,AACALL DELAYMOV A,R3MOVC A,A+DPTRMOV P2,#04HMOV P0,AACALL DELAY RETDAT1:DB 00H,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H;灭,1,2,3,4,5,6,7,8,9,灭,FDAT2:DB 3FH, 06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71HDELAY1: MOV 35H

11、,#08HLOOP0: ACALL DISPLAYDJNZ 35H,LOOP0RET延时(显示和去抖动用到):DELAY: MOV 32H,#12HLOOP: MOV 33H,#0AFHLOOP1: DJNZ 33H,LOOP1DJNZ 32H,LOOPRET发声程序:BARK: SETB RINGACALL DELAY1ACALL DELAY1CLR RING; 按键发声RETINT0(抢答时间R1调整程序):INT0SUB:MOV A,R1MOV B,#0AHDIV ABMOV R5,AMOV R4,BMOV R3,#0AHACALL DISPLAY;先在两个时间LED上显示R1JNB P

12、3.2,INC0; P3.2为+1s键,如按下跳到INCO JNB P3.3,DEC0; P3.3为-1s键,如按下跳到DECOJNB P3.4,BACK0; P3.4为确定键,如按下跳到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 INT0SUBBACK0: RETITO溢出中断(响铃程序):T0INT:MOV TH0,#0ECHMOV TL0,#0FFHJNB RING,OUTCPL P3.6 ; RING标志位为1时候P3.6口不短取反使喇叭发出一定频率的声音OUT: RETIT1溢出中断(计时程序):T1INT: MOV TH1,#3CHMOV TL1,#0B0HINC R0RETIEND

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号