娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年01月18日(星期六)

正在發(fā)生

2021年01月18日 | 51單片機八路搶答器課程設計

發(fā)布者:清晨微風 來源: eefocus關鍵字:51單片機  八路搶答器  計時 手機看文章 掃描二維碼
隨時隨地手機看文章

本人的這個設計改進后解決了前一個版本中1號搶答優(yōu)先的問題,并增加了錦囊的設置,當參賽選手在回答問題時要求使用錦囊,則主持人按下?lián)尨痖_始鍵,計時重新開始。


;八路搶答器電路請看下圖是用ps仿真的,已經(jīng)測試成功

<單片機八路搶答器電路圖>


單片機八路搶答器程序


OK EQU 20H;搶答開始標志位


RING EQU 22H;響鈴標志位


ORG 0000H


AJMP MAIN


ORG 0003H


AJMP INT0SUB


ORG 000BH


AJMP T0INT


ORG 0013H


AJMP INT1SUB


ORG 001BH


AJMP T1INT


ORG 0040H


MAIN: MOV R1,#30;初設搶答時間為30s


MOV R2,#60;初設答題時間為60s


MOV TMOD,#11H;設置未定時器/模式1


MOV TH0,#0F0H


MOV TL0,#0FFH;越高發(fā)聲頻率越高,越尖


MOV TH1,#3CH


MOV TL1,#0B0H;50ms為一次溢出中斷


SETB EA


SETB ET0


SETB ET1


SETB EX0


SETB EX1;允許四個中斷,T0/T1/INT0/INT1


CLR OK


CLR RING


SETB TR1


SETB TR0;一開始就運行定時器,以開始顯示FFF.如果想重新計數(shù),重置TH1/TL1就可以了


;=====查詢程序=====


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


;=====非法搶答處理程序=====


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




;=====INT0(搶答時間R1調整程序)=====


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


;=====INT1(回答時間R2調整程序)=====


INT1SUB:MOV A,R2


MOV B,#0AH


DIV AB


MOV R5,A


MOV R4,B


MOV R3,#0AH


ACALL DISPLAY


JNB P3.4,INC1


JNB P3.5,DEC1


JNB P3.1,BACK1


AJMP INT1SUB


INC1: MOV A,R2


CJNE A,#63H,ADD1


MOV R2,#00H


ACALL DELAY1


AJMP INT1SUB


ADD1: INC R2


ACALL DELAY1


AJMP INT1SUB


DEC1: MOV A,R2


JZ SETR2


DEC R2


ACALL DELAY1


AJMP INT1SUB


SETR2: MOV R2,#63H


ACALL DELAY1


AJMP INT1SUB


BACK1: RETI


;=====倒計時程序(搶答倒計時和回答倒計時都跳到改程序)=====


REPEAT:MOV A,R2 ;使用錦囊時重新計時


MOV R6,A


CLR RING


COUNT: MOV R0,#00H;重置定時器中斷次數(shù)


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的情況,響并顯示號數(shù)并清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;如按下停止鍵退出


JNB OK,CHECKK ;只在回答倒計時才有效


AJMP NEXTT


CHECKK:JNB P3.0,REPEAT ;判斷是否使用錦囊


NEXTT: ACALL DISPLAY


JB OK,ACCOUT;如果是搶答倒計時,如是則查詢搶答,否者跳過查詢繼續(xù)倒數(shù)(這里起到鎖搶答作用)


AJMP RECOUNT


ACCOUT:


MOV A,36H


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,TZ1


JNB ACC.7,TZ2


AJMP RECOUNT


TZ1:JMP TRUE7


TZ2:JMP TRUE8


QUIT: CLR OK;如果按下了"停止鍵"執(zhí)行的程序


CLR RING


AJMP START


;=====正常搶答處理程序=====


TRUE1: ACALL BARK


MOV A,R2


MOV R6,A;搶答時間R2送R6


MOV R3,#01H


CLR OK;因為答題的計時不再查詢搶答,所以就鎖了搶答


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


;=====犯規(guī)搶答程序=====


ERROR: MOV R0,#00H


MOV TH1,#3CH


MOV TL1,#0B0H


MOV 34H,R3;犯規(guī)號數(shù)暫存與(34H)


HERE: MOV A,R0


CJNE A,#06H,FLASH;0.3s向下運行->滅并停響


CLR RING


MOV R3,#0AH


MOV R4,#0AH


MOV R5,#0AH;三燈全滅


AJMP CHECK1


FLASH: CJNE A,#0CH,CHECK1;下面是0.8s的情況,響并顯示號數(shù)并清R0,重新計


SETB RING


MOV R0,#00H


MOV R3,34H;取回號數(shù)


MOV R5,#0BH


MOV R4,#0BH;顯示FF和號數(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 DELAY2


MOV DPTR,#DAT2


MOV A,R5


MOVC A,@A+DPTR


MOV P2,#0fdH


MOV P0,A


ACALL DELAY2


MOV A,R4


MOVC A,@A+DPTR


MOV P2,#0fbH


MOV P0,A


ACALL DELAY2


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


;第一個為零,其他與上相同,因為十位如果為零顯示熄滅


;====加減時間延時(起到不會按下就加N個數(shù))======


DELAY1: MOV 35H,#08H


LOOP0: ACALL DISPLAY


DJNZ 35H,LOOP0


RET


;=====延時4236個機器周期(去抖動用到)=====


DELAY: MOV 32H,#12H


LOOP: MOV 33H,#0AFH


LOOP1: DJNZ 33H,LOOP1


DJNZ 32H,LOOP


RET


;=====延時4236個機器周期(顯示用到)=====


DELAY2: MOV 32H,#43H


LOOP3: MOV 33H,#1EH


MOV A,R7 ;每隔60~70個機器周期讀一次P1口,全為1時為無效數(shù)據(jù),繼續(xù)讀,有一個不為1時,轉到正常搶答處理


JNZ AAAA1 ;沒讀到有效數(shù)據(jù)時繼續(xù)轉到AAAA1


LOOP2: DJNZ 33H,LOOP2


DJNZ 32H,LOOP3


RET


;=====讀搶答按鍵數(shù)據(jù)口程序=====


;由于在讀搶答數(shù)據(jù)口的時候,單片機首先進入倒計時程序,再調用顯示程序,最后才檢測按鍵口


;然而在檢測按鍵口時動態(tài)掃描要調用三次(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


關鍵字:51單片機  八路搶答器  計時 引用地址:51單片機八路搶答器課程設計

上一篇:關于4×4矩陣式鍵盤路的改進
下一篇:簡易數(shù)字存儲示波器的設計

0

推薦閱讀

有著全面屏鼻祖之稱的夏普,將推出他們的新機了,目前這款手機已經(jīng)悄然現(xiàn)身。從美國FCC認證消息顯示的情況來看,夏普即將推出的這款新機是Aquos S3,跟之前外形風格不一樣的是,畫風從“美人尖”突變至iPhone X的劉海。不過從Aquos S3的真機來看,這款手機的底部依然保留有下巴,并且有SHARP Logo,整機屏占比看上去還OK,只是這樣的搭配多少有些感人...
XP Power正式宣布推出兩款超寬輸入范圍、高性價比、高功率密度的DC-DC轉換器,適用于鐵路牽引和鐵路車輛。 這兩款DC-DC轉換器的超寬輸入范圍可為客戶降低庫存要求,也可滿足超寬的應用范圍。額定功率20W的RDE20系列具有4:1輸入范圍, 13-70VDC輸入版本提供24、37.5和48VDC額定輸入, 42-176VDC版本提供72&110VDC額定輸入。額定功率為25W的RDF25系列具有...
觸發(fā)是數(shù)字示波器區(qū)別于模擬示波器的最大特征之一。數(shù)字示波器的觸發(fā)功能非常地豐富,通過觸發(fā)設置使用戶可以看到觸發(fā)前的信號也可以看到觸發(fā)后的信號。 對于高速信號的分析,其實很少去談觸發(fā),因為通常是捕獲很長時間的波形然后做眼圖和抖動分析。觸發(fā)可能對于低速信號的測量應用得頻繁些,因為低速信號通常會遇到很怪異的信號需要通過觸發(fā)來隔離。示波...
1月18日,在外交部例行記者會上,有記者提問稱:“據(jù)媒體報道,特朗普政府通知包括芯片制造商英特爾在內的幾家華為供應商,稱將吊銷他們部分對華為銷售產(chǎn)品的許可證,請問中方對此有何評論?”對此,中國外交部發(fā)言人華春瑩表示,中方已經(jīng)多次就美方無端打壓中國企業(yè)的問題表明了嚴正立場。“美方的所作所為是赤裸裸的霸凌行徑,違背了其一貫自我標榜的市...

史海拾趣

問答坊 | AI 解惑

可樂發(fā)電手機

    這款概念手機由中國年輕設計師 Daizi Zheng 設計。它利用碳水化合物發(fā)電,為手機生物電池的工作提供能源支持。這種利用碳水化合物產(chǎn)生電量的生物電池,其使用壽命約為一般鋰電池的3到4倍,除了不污染環(huán)境,它還能延長手機的使用 ...…

查看全部問答∨

智能手機對操作系統(tǒng)的實時性有怎樣的要求

我在寫畢業(yè)論文,其中有一節(jié)的要寫這個內容。不過我沒找到合適的材料。 哪位仁兄弟能給介紹一下。 小弟這邊有禮了。…

查看全部問答∨

請教WinCE5.0+S3C2440環(huán)境下,將5.0BSP下的SDHC驅動移植到4.2BSP的方法!!!

如題,請大家指點,謝謝。。。 我知道要修改中斷部分,因為兩個版本的中斷機制不一樣,請教修改步驟,哪位大俠有詳細修改過程,因為這方面資料實在是太少了………

查看全部問答∨

protues 仿真IIC (24c04b)讀寫問題

我在現(xiàn)實試驗中讀寫都可以,但是,在仿真中就不可以了, 好像寫不進去,都除了的都是0xff,不知道為什么, 還有的情況是我寫的是0x30,讀出的是0x3f…

查看全部問答∨

新手提問:如何在VC下將USB設備安全移除后再次枚舉?

各位大蝦,現(xiàn)在遇到了一個問題,如題所示,我現(xiàn)在需要在VC下面實現(xiàn)將已經(jīng)安全移除的設備在不插拔USB線的情況下再次枚舉出來設備。我寫的那部分在移除之后,用Windows設備管理員也沒有辦法再次枚舉成功,設備依然顯示?號;現(xiàn)在不知道如何做了,謝謝 ...…

查看全部問答∨

為什么AD在工作一段時間后會出現(xiàn)異常現(xiàn)象?

用的AD是電力芯片CS5460, 一共有3路電壓顯示,每1路各自對應一片AD,儀器剛開始工作顯示電壓都正常,但工作一段時間,就會出現(xiàn)以下兩種現(xiàn)象: 1.有1路電壓顯示變?yōu)?,另1路電壓顯示正常但是不會動了,就像死機一樣,不加電壓還是顯示這個電壓值, ...…

查看全部問答∨

那個型號帶有差分增益的?謝謝了!

                                  …

查看全部問答∨

【求助】讀寫flash(浮點數(shù)是怎么存儲的?)問題

1.浮點數(shù)在flash中是怎么存儲的?(比如1.2在flash中保存為多少?) 2.保存浮點數(shù)和整數(shù)在寫flash和讀的時候有什么樣的區(qū)別嗎?謝謝…

查看全部問答∨

是不是有一個 編程的國際標準范例庫(我說的不是C標準庫,當然如果你有.....)

首先,再啰嗦一下,我說的不是C標準庫。我是說,有沒那種具有參考性的編程指導。是這樣的,我在寫一個 退幣器 的檢測函數(shù)。其實說白了,就是一個紅外對管的檢測函數(shù)。雖然不知道世界上所有退幣器都是紅外檢測,但心想,投幣退幣這種東西的歷史應該 ...…

查看全部問答∨
小廣播
添点儿料...
无论热点新闻、行业分析、技术干货……
設計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 江津市| 澄江县| 岢岚县| 彭州市| 灌南县| 沾化县| 合肥市| 乐东| 靖远县| 安新县| 武胜县| 河南省| 许昌市| 双鸭山市| 岑巩县| 万安县| 望谟县| 黑河市| 葫芦岛市| 普安县| 云南省| 东海县| 金昌市| 庆城县| 耒阳市| 邳州市| 任丘市| 通城县| 无为县| 云龙县| 睢宁县| 双鸭山市| 崇仁县| 年辖:市辖区| 曲沃县| 安塞县| 阿坝| 樟树市| 塘沽区| 太谷县| 涞源县|