注解說是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.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |