欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2129|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

求一個(gè)基于51單片機(jī)的匯編語(yǔ)言8路搶答器

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:267922 發(fā)表于 2017-12-27 19:09 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
求一個(gè)基于51單片機(jī)的匯編語(yǔ)言8路搶答器
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:363564 發(fā)表于 2018-7-3 11:34 | 只看該作者
OK EQU 20H                       ;搶答開(kāi)始標(biāo)志位         RING EQU 22H                     ;響鈴標(biāo)志位          DATA0 EQU 36H                    ;搶答按鍵口數(shù)據(jù)存放地址          ORG 0000H         AJMP MAIN         ORG 0003H           AJMP INTT0         ORG 000BH         AJMP T0INT         ORG 001BH         AJMP T1INT         ORG 0040H MAIN:   MOV R1,#14H                       ;初設(shè)搶答時(shí)間為20s         MOV R2,#1EH                     ;初設(shè)答題時(shí)間為30s         MOV 38H,#3CH                      ;啟用錦囊時(shí)間從60s倒計(jì)時(shí)         MOV TMOD,#11H                    ;設(shè)置未定時(shí)器/模式1         MOV TH0,#0F0H         MOV TL0,#0FFH                    ;越高發(fā)聲頻率越高,越尖         MOV TH1,#3CH         MOV TL1,#0B0H                    ;50ms為一次溢出中斷         SETB EA         SETB ET0         SETB ET1                         ;允許二個(gè)中斷,T0/T1         CLR OK         CLR RING          SETB TR1          SETB TR0                        ;一開(kāi)始就運(yùn)行定時(shí)器,以開(kāi)始顯示FFF.如果想重新計(jì)數(shù),重置TH1/TL1就可以了 START:   MOV DATA0,#0FFH                 ;初始化           MOV R5,#0BH          MOV R4,#0BH          MOV R3,#0BH          ACALL DISPLAY                   ;未開(kāi)始搶答時(shí)候顯示FFF           JNB P3.3,SELSUB0          JNB P3.4,TZ3                    ;倒計(jì)時(shí)調(diào)整           JB P3.0,NEXT          ACALL DELAY          JB P3.0,NEXT                    ;去抖動(dòng),如果"開(kāi)始鍵"按下就向下執(zhí)行,否者跳到非法搶答查詢(xún)          SETB EX0                        ;開(kāi)放INT0           ACALL BARK                      ;按鍵發(fā)聲          MOV A,R1          MOV R6,A                    ;送R1->R6,因?yàn)镽1中保存了搶答時(shí)間          SETB OK                         ;搶答標(biāo)志位,在使用錦囊時(shí)用作判斷是搶答倒計(jì)時(shí)還是回答倒計(jì)時(shí)          MOV R3,#0AH                     ;搶答只顯示計(jì)時(shí),滅號(hào)數(shù)          AJMP COUNT                      ;進(jìn)入倒計(jì)時(shí)程序,"查詢(xún)有效搶答的程序"在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,TZ1          JNB P1.7,TZ2          AJMP START  TZ1:     AJMP FALSE7 TZ2:     AJMP FALSE8 TZ3:     AJMP SELSUB1 FALSE1: MOV R3,#01H         AJMP ERROR FALSE2: MOV R3,#02H                         AJMP ERROR FALSE3: MOV R3,#03H         AJMP ERROR FALSE4: MOV R3,#04H         AJMP ERROR FALSE5: MOV R3,#05H         AJMP ERROR FALSE6: MOV R3,#06H         AJMP ERROR FALSE7: MOV R3,#07H         AJMP ERROR FALSE8: MOV R3,#08H         AJMP ERROR SELSUB0: MOV A,R1          MOV B,#0AH          DIV AB          MOV R5,A          MOV R4,B          MOV R3,#0AH          ACALL DISPLAY                   ;先在兩個(gè)時(shí)間LED上顯示R1          JNB P3.5,INC0                   ;P3.5為+1s鍵,如按下跳到INCO          JNB P3.6,DEC0                   ;P3.6為-1s鍵,如按下跳到DECO          JNB P3.1,BACK0                  ;P3.1為確定鍵,如按下跳到BACKO          AJMP SELSUB0 INC0:   MOV A,R1         CJNE A,#63H,ADD0                 ;如果不是99,R2加1,如果加到99,R1就置0,重新加起。         MOV R1,#00H         ACALL DELAY1         AJMP SELSUB0 ADD0:   INC R1         ACALL DELAY1         AJMP SELSUB0 DEC0:   MOV A,R1         JZ SETR1                         ;如果R1為0, R1就置99,          DEC R1         ACALL DELAY1          AJMP SELSUB0 SETR1:  MOV R1,#63H         ACALL DELAY1         AJMP SELSUB0 BACK0:  AJMP START SELSUB1: MOV A,R2         MOV B,#0AH         DIV AB        MOV R5,A        MOV R4,B        MOV R3,#0AH        ACALL DISPLAY     JNB P3.5,INC1     JNB P3.6,DEC1     JNB P3.1,BACK1     AJMP SELSUB1 INC1:   MOV A,R2         CJNE A,#63H,ADD1         MOV R2,#00H         ACALL DELAY1 AJMP SELSUB1 ADD1:   INC R2          ACALL DELAY1          AJMP SELSUB1 DEC1:   MOV A,R2      JZ SETR2      DEC R2     ACALL DELAY1     AJMP SELSUB1 SETR2:  MOV R2,#63H         ACALL DELAY1         AJMP SELSUB1 BACK1: AJMP START REPEAT:MOV A,38h                        ;使用錦囊時(shí)重新計(jì)時(shí)        MOV R6,A        CLR RING         ;當(dāng)?shù)褂?jì)時(shí)進(jìn)入最后5秒的時(shí)候,啟用錦囊能消除蜂鳴 COUNT:MOV R0,#00H                    ;重置定時(shí)器中斷次數(shù)         MOV TH1,#3CH         MOV TL1,#0B0H                  ;重置定時(shí)器 RECOUNT:MOV A,R6                       ;R6保存了倒計(jì)時(shí)的時(shí)間,之前先將搶答時(shí)間或回答時(shí)間給R6         MOV B,#0AH     DIV AB                             ;除十分出個(gè)位/十位     MOV 30H,A                          ;十位存于(30H)      MOV 31H,B                          ;個(gè)位存于(31H)      MOV R5,30H                         ;取十位     MOV R4,31H                         ;取個(gè)位     MOV A,R6     SUBB A,#07H     JNC LARGER                   ;大于5s跳到LARGER,小于等于5s會(huì)提醒     MOV A,R0         CJNE A,#0AH,FULL               ;1s中0.5s向下運(yùn)行     CLR RING      AJMP CHECK FULL: CJNE A,#14H,CHECK              ;下面是1s的情況,響并顯示號(hào)數(shù)并清R0,重新計(jì)       SETB RING       MOV A,R6     JZ QUIT                            ;計(jì)時(shí)完畢     MOV R0,#00H     DEC R6                            ;一秒標(biāo)志減1       AJMP CHECK LARGER: MOV A,R0         CJNE A,#14H,CHECK          ;如果1s向下運(yùn)行,否者跳到"停/顯示"         DEC R6                           ;計(jì)時(shí)一秒R6自動(dòng)減1         MOV R0,#00H CHECK: JNB P3.1,QUIT         ;如按下停止鍵退出         JNB OK,CHECKK      ;只在回答倒計(jì)時(shí)才有效          AJMP NEXTT CHECKK:JNB P3.0,REPEAT    ;判斷是否使用錦囊 NEXTT: ACALL DISPLAY    JB OK,ACCOUT;如果是搶答倒計(jì)時(shí),如是則查詢(xún)搶答,否者跳過(guò)查詢(xún)繼續(xù)倒數(shù)(這里起到鎖搶答作用)         AJMP RECOUNT ACCOUT:MOV A,DATA0         JNB ACC.0,TRUE1        JNB ACC.1,TRUE2        JNB ACC.2,TRUE3        JNB ACC.3,TRUE4        JNB ACC.4,TRUE5        JNB ACC.5,TRUE6        JNB ACC.6,TZ7       JNB ACC.7,TZ8       AJMP RECOUNT  TZ7: AJMP TRUE7  TZ8: AJMP TRUE8     QUIT:  CLR OK                         ;如果按下了"停止鍵"執(zhí)行的程序    CLR RING    AJMP START TRUE1: ACALL BARK        MOV A,R2        MOV R6,A              ;搶答時(shí)間R2送R6        MOV R3,#01H        CLR OK                ;因?yàn)榇痤}的計(jì)時(shí)不再查詢(xún)搶答,所以就鎖了搶答        AJMP COUNT TRUE2:ACALL BARK       MOV A,R2       MOV R6,A       MOV R3,#02H       CLR OK       AJMP COUNT TRUE3:ACALL BARK       MOV A,R2       MOV R6,A       MOV R3,#03H       CLR OK       AJMP COUNT TRUE4:ACALL BARK       MOV A,R2       MOV R6,A       MOV R3,#04H       CLR OK        AJMP COUNT TRUE5: ACALL BARK          MOV A,R2         MOV R6,A         MOV R3,#05H         CLR OK         AJMP COUNT TRUE6:  ACALL BARK          MOV A,R2         MOV R6,A         MOV R3,#06H         CLR OK         AJMP COUNT TRUE7:  ACALL BARK          MOV A,R2         MOV R6,A         MOV R3,#07H         CLR OK         AJMP COUNT TRUE8:  ACALL BARK          MOV A,R2         MOV R6,A         MOV R3,#08H         CLR OK         AJMP COUNT ERROR:  MOV R0,#00H         MOV TH1,#3CH         MOV TL1,#0B0H         MOV 34H,R3                ;犯規(guī)號(hào)數(shù)暫存與(34H)  HERE:   MOV A,R0         CJNE A,#06H,FLASH         ;0.3s向下運(yùn)行->滅并停響         CLR RING          MOV R3,#0AH         MOV R4,#0AH         MOV R5,#0AH               ;三燈全滅         AJMP CHECK1  FLASH:  CJNE A,#0CH,CHECK1        ;下面是0.8s的情況,響并顯示號(hào)數(shù)并清R0,重新計(jì)         SETB RING         MOV R0,#00H         MOV R3,34H                ;取回號(hào)數(shù)         MOV R5,#0BH         MOV R4,#0BH               ;顯示FF和號(hào)數(shù)         AJMP CHECK1 CHECK1: JNB P3.1,QUIT1         ACALL DISPLAY         AJMP HERE QUIT1:  CLR RING         CLR OK         AJMP START DISPLAY:MOV DPTR,#DAT1           ;查表顯示程序,利用P0口做段選碼口輸出/P2低三位做位選碼輸出          MOV A,R3         MOVC A,@A+DPTR         MOV P2,#0feH         MOV P0,A         ACALL DELAY         MOV DPTR,#DAT2         MOV A,R5         MOVC A,@A+DPTR         MOV P2,#0fdH         MOV P0,A         ACALL DELAY         MOV A,R4         MOVC A,@A+DPTR         MOV P2,#0fbH         MOV P0,A         ACALL DELAY         RET DAT1:DB 00h,06h,5bh,4fh,66h,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 ……………………  …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表