1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

標題: 單片機競賽搶答器部分功能程序 [打印本頁]

作者: 0427    時間: 2018-6-12 07:31
標題: 單片機競賽搶答器部分功能程序
====查詢程序=====
START:   MOV R5,#0BH
         MOV R4,#0BH
         MOV R3,#0BH
ACALL DISPLAY;未開始搶答時候顯示FFF
         JB P3.0,NEXT;ddddddd
         ACALL DELAY
         JB P3.0,NEXT;去抖動,如果"開始鍵"按下就向下執(zhí)行,否者跳到非法搶答查詢
         ACALL BARK;按鍵發(fā)聲
         MOV A,R1
  MOV R6,A;送R1->R6,因為R1中保存了搶答時間
     SETB OK;搶答標志位,用于COUNT只程序中判斷是否查詢搶答
         MOV R7,#01H  ;讀搶答鍵數(shù)據(jù)信號標志,這里表示只讀一次有用信號
          MOV R3,#0AH;搶答只顯示計時,滅號數(shù)
        AJMP COUNT;進入倒計時程序,"查詢有效搶答的程序"在COUNT里面
NEXT:   JNB P1.0,FALSE1
    JNB P1.1,FALSE2
    JNB P1.2,FALSE3
    JNB P1.3,FALSE4
    JNB P1.4,FALSE5
    JNB P1.5,FALSE6
    JNB P1.6,FALSE7
    JNB P1.7,FALSE8
    AJMP START
;=====INT0(搶答時間R1調(diào)整程序)=====
INT0SUB:MOV A,R1
        MOV B,#0AH
         DIV AB
         MOV R5,A
         MOV R4,B
         MOV R3,#0AH
         ACALL DISPLAY;先在兩個時間LED上顯示R1
         JNB P3.4,INC0;P3.4為+1s鍵,如按下跳到INCO
         JNB P3.5,DEC0;P3.5為-1s鍵,如按下跳到DECO
         JNB P3.1,BACK0;P3.1為確定鍵,如按下跳到BACKO
    AJMP INT0SUB
INC0:   MOV A,R1
CJNE A,#63H,ADD0;如果不是99,R2加1,如果加到99,R1就置0,重新加起。
        MOV R1,#00H
        ACALL DELAY1
AJMP INT0SUB
ADD0:   INC R1
        ACALL DELAY1
        AJMP INT0SUB
DEC0:   MOV A,R1
    JZ SETR1;如果R1為0, R1就置99,
    DEC R1
    ACALL DELAY1
    AJMP INT0SUB
SETR1:  MOV R1,#63H
        ACALL DELAY1
        AJMP INT0SUB
BACK0:  RETI
;=====讀搶答按鍵數(shù)據(jù)口程序=====
;由于在讀搶答數(shù)據(jù)口的時候,單片機首先進入倒計時程序,再調(diào)用顯示程序,最后才檢測按鍵口
;然而在檢測按鍵口時動態(tài)掃描要調(diào)用三次(4ms)延時程序.這樣就會導致讀數(shù)據(jù)口出現(xiàn)滯后,造成1號優(yōu)先最高.8號最低.
;故采用在延時子程序中加了讀數(shù)據(jù)口程序.保證了靈敏度和可靠性
AAAA1:   MOV A,P1
         CJNE A,#0FFH,AA1           ;當不全為1時的數(shù)據(jù)為有效數(shù)據(jù)
AA0:     MOV 36H,A          ;將有效數(shù)據(jù)送到36H暫存
           AJMP LOOP2
          AA1:    DEC R7         
          AJMP AA0
   ;=====發(fā)聲程序=====
BARK:   SETB RING
        ACALL DELAY1
        ACALL DELAY1
        CLR RING;按鍵發(fā)聲
    RET
;=====TO溢出中斷(響鈴程序)=====
T0INT:  MOV TH0,#0ECH
        MOV TL0,#0FFH
        JNB RING,OUT;
     CPL P3.6;RING標志位為1時候P3.6口不短取反使喇叭發(fā)出一定頻率的聲音
OUT:    RETI
;=====T1溢出中斷(計時程序)=====
T1INT:  MOV TH1,#3CH
        MOV TL1,#0B0H
    INC R0
    RETI
END









歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1