注解说是R0中断次数,但我看起来好像R0都是没变化的,学单片机时间不长,不太懂,请教R0在这个过程是怎么计数的?谢谢!
===倒计时程序===
COUNT: MOV R0,#00H ;重置定时器中断次数 MOV TH1,#3CH MOV TL1,#0B0H ;重置定时器 RECOUNT:MOV A,R6;R6 保存了倒计时的时间,之前先将抢答时间或回答时间给R6 MOV B,#0AH DIV AB ;除十分出个位/十位 MOV 30H,A ;十位存于(30H) MOV 31H,B ;个位存于(31H) MOV R5,30H ; 取十位 MOV R4,31H ; 取个位 MOV A,R6 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 JB OK,ACCOUT 如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用) AJMP RECOUNT ACCOUT: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,TZ3 JNB P1.7,TZ4 AJMP RECOUNT TZ3: JMP TRUE7 TZ4: JMP TRUE8 QUIT: CLR OK ; 如果按下了"停止键"执行的程序 CLR RING AJMP START
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |