久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2838|回復: 0
打印 上一主題 下一主題
收起左側(cè)

單片機搶答器匯編代碼與仿真(帶搶答和回答時間調(diào)整鍵按鍵)

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:277709 發(fā)表于 2018-1-19 13:19 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
這個proteus仿真文件有搶答時間調(diào)整鍵,回答時間調(diào)整鍵等功能,采用單片機控制4位數(shù)碼管顯示.
51單片機搶答器仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1.           OK EQU 20H              //搶答開始標志位
  2.          RING EQU 22H            //響鈴標志位  
  3.      DATA0 EQU 36H             //搶答按鍵口數(shù)據(jù)存放地址  
  4.      ORG 0000H
  5.      AJMP MAIN
  6.      ORG 0004H   
  7.      AJMP INTT0
  8.      ORG 000BH
  9.      AJMP T0INT
  10.          ORG 001BH
  11.          AJMP T1INT
  12.          ORG 0040H

  13. MAIN:MOV R1,#20                 //初設(shè)搶答時間為20s
  14.      MOV R2,#30                //初設(shè)答題時間為30s
  15.      MOV 38h,#60               //啟用錦囊時間從60s倒計時
  16.      MOV TMOD,#11H             //設(shè)置未定時器/模式1
  17.      MOV TH0,#0F0H
  18.      MOV TL0,#0FFH             //越高發(fā)聲頻率越高,越尖
  19.      MOV TH1,#3CH
  20.      MOV TL1,#0B0H             //50ms為一次溢出中斷
  21.      SETB EA
  22.      SETB ET0
  23.          SETB IT0
  24.      MOV IE,#81H
  25.      SETB ET1                  //允許二個中斷,T0/T1
  26.      CLR OK
  27.      SETB TR1
  28.      SETB TR0
  29.          ACALL START                           //一開始就運行定時器,以開始顯示FFF.如果想重新計數(shù),重置TH1/TL1就可以了
  30.      SJMP $
  31. START:MOV DATA0,#0FFH           //初始化  
  32.       MOV R5,#0BH
  33.       MOV R4,#0BH
  34.       MOV R3,#0BH
  35.       ACALL DISPLAY            //未開始搶答時候顯示FFF  
  36.       JNB P3.3,SELSUB0
  37.       JNB P3.4,TZ3               //倒計時調(diào)整  
  38.       JB P3.0,NEXT
  39.       ACALL DELAY
  40.       JB P3.0,NEXT             //去抖動,如果“開始鍵”按下就向下執(zhí)行,否者跳到非法搶答查詢
  41.       SETB EX0                 //開放INT0  
  42.       ACALL BARK               //按鍵發(fā)聲
  43.       MOV A,R1
  44.       MOV R6,A                 //送R1->R6,因為R1中保存了搶答時間
  45.       SETB OK                  //搶答標志位,在使用錦囊時用作判斷是搶答倒計時還是回答倒計時
  46.       MOV R3,#0AH              //搶答只顯示計時,滅號數(shù)
  47.       AJMP COUNT               //進入倒計時程序,“查詢有效搶答的程序”在COUNT里面
  48. NEXT:JNB P1.0,FALSE1
  49.      JNB P1.1,FALSE2
  50.      JNB P1.2,FALSE3
  51.      JNB P1.3,FALSE4
  52.      JNB P1.4,FALSE5
  53.      JNB P1.5,FALSE6
  54.      JNB P1.6,TZ1
  55.      JNB P1.7,TZ2
  56.      AJMP START
  57. TZ1:AJMP FALSE7
  58. TZ2:AJMP FALSE8
  59. TZ3:AJMP SELSUB1

  60. FALSE1:MOV R3,#01H
  61.        AJMP ERROR
  62. FALSE2:MOV R3,#02H
  63.        AJMP ERROR
  64. FALSE3:MOV R3,#03H
  65.        AJMP ERROR
  66. FALSE4:MOV R3,#04H
  67.        AJMP ERROR
  68. FALSE5:MOV R3,#05H
  69.        AJMP ERROR
  70. FALSE6:MOV R3,#06H
  71.        AJMP ERROR
  72. FALSE7:MOV R3,#07H
  73.        AJMP ERROR
  74. FALSE8:MOV R3,#08H
  75.        AJMP ERROR

  76. SELSUB0: MOV A,R1
  77.          MOV B,#0AH
  78.          DIV AB
  79.          MOV R5,A
  80.          MOV R4,B
  81.          MOV R3,#0AH
  82.          LCALL DISPLAY             //先在兩個時間LED上顯示R1
  83.          JNB P3.5,INC0                //P3.5為+1s鍵,如按下跳到INCO
  84.          JNB P3.6,DEC0               //P3.6為-1s鍵,如按下跳到DECO
  85.          JNB P3.1,BACK0           //P3.1為確定鍵,如按下跳到BACKO
  86.          AJMP SELSUB0
  87. INC0:MOV A,R1
  88.      CJNE A,#63H,ADD0         //如果不是99,R2加1,如果加到99,R1置0,重新加起
  89.      MOV R1,#00H
  90.      ACALL DELAY1
  91.      AJMP SELSUB0
  92. ADD0:INC R1
  93.      ACALL DELAY1
  94.      AJMP SELSUB0
  95. DEC0:MOV A,R1
  96.      JZ SETR1                       //如果R1為0, R1就置99,  
  97.      DEC R1
  98.      ACALL DELAY1  
  99.      AJMP SELSUB0
  100. SETR1:MOV R1,#63H
  101.       ACALL DELAY1
  102.       AJMP SELSUB0
  103. BACK0:AJMP START

  104. SELSUB1:MOV A,R2
  105.         MOV B,#0AH
  106.         DIV AB
  107.         MOV R5,A
  108.         MOV R4,B
  109.         MOV R3,#0AH
  110.         ACALL DISPLAY
  111.         JNB P3.5,INC1
  112.         JNB P3.6,DEC1
  113.         JNB P3.1,BACK1
  114.             AJMP SELSUB1
  115. INC1:MOV A,R2
  116.      CJNE A,#63H,ADD1
  117.      MOV R2,#00H
  118.      ACALL DELAY1
  119.      AJMP SELSUB1
  120. ADD1:INC R2
  121.      ACALL DELAY1  
  122.      AJMP SELSUB1
  123. DEC1:MOV A,R2
  124.      JZ SETR2
  125.      DEC R2
  126.      ACALL DELAY1
  127.      AJMP SELSUB1
  128. SETR2:MOV R2,#63H
  129.       ACALL DELAY1
  130.       AJMP SELSUB1
  131. BACK1:AJMP START

  132. REPEAT:MOV A,38h                      //使用錦囊時重新計時
  133.        MOV R6,A
  134.        CLR RING                       //當?shù)褂嫊r進入最后5秒的時候,啟用錦囊能消除蜂鳴

  135. COUNT:MOV R0,#00H                     //重置定時器中斷次數(shù)
  136.       MOV TH1,#3CH
  137.       MOV TL1,#0B0H                 //重置定時器
  138. RECOUNT:MOV A,R6                   //R6保存了倒計時的時間,之前先將搶答時間或回答時間給R6
  139.         MOV B,#0AH
  140.         DIV AB                       //除十分出個位/十位
  141.         MOV 30H,A                   //十位存于(30H)  
  142.         MOV 31H,B                   //個位存于(31H)  
  143.         MOV R5,30H                  //取十位
  144.         MOV R4,31H                  //取個位
  145.         MOV A,R6
  146.         SUBB A,#07H
  147.         JNC LARGER                  //大于5s跳到LARGER,小于等于5s會提醒
  148.         MOV A,R0
  149.         CJNE A,#0AH,FULL            //1s中0.5s向下運行
  150.         CLR RING  
  151.         AJMP CHECK
  152. FULL:CJNE A,#14H,CHECK               //下面是1s的情況,響并顯示號數(shù)并清R0,重新計數(shù)
  153.      SETB RING
  154.      MOV A,R6
  155.      JZ QUIT                        //計時完畢
  156.      MOV R0,#00H
  157.      DEC R6                              //一秒標志減1
  158.      AJMP CHECK
  159. LARGER:MOV A,R0
  160.        CJNE A,#14H,CHECK           //如果1s向下運行
  161.        DEC R6                     //計時一秒R6自動減1
  162.        MOV R0,#00H
  163. CHECK:JNB P3.1,QUIT               //如按下停止鍵退出
  164.       JNB OK,CHECKK            //只在回答倒計時才有效  
  165.       AJMP NEXTT
  166. CHECKK:JNB P3.0,REPEAT            //判斷是否使用錦囊
  167. NEXTT: ACALL DISPLAY
  168.        JB OK,ACCOUT              //如果是搶答倒計時,如是則查詢搶答,否者跳過查詢繼續(xù)倒數(shù)(這里起到鎖搶答作用)  
  169.        AJMP RECOUNT
  170. ACCOUT:MOV A,DATA0  
  171.           JNB ACC.0,TRUE1
  172.           JNB ACC.1,TRUE2
  173.           JNB ACC.2,TRUE3
  174.           JNB ACC.3,TRUE4
  175.           JNB ACC.4,TRUE5
  176.           JNB ACC.5,TRUE6
  177.           JNB ACC.6,TZ7
  178.           JNB ACC.7,TZ8
  179.           AJMP RECOUNT
  180. TZ7:AJMP TRUE7
  181. TZ8:AJMP TRUE8
  182. QUIT:CLR OK                   //如果按下了“停止鍵”執(zhí)行的程序
  183.      CLR RING
  184.      AJMP START
  185. TRUE1:ACALL BARK
  186.       MOV A,R2
  187.       MOV R6,A               //搶答時間R2送R6
  188.       MOV R3,#01H
  189.       CLR OK                  //因為答題的計時不再查詢搶答,所以就鎖了搶答
  190.       AJMP COUNT
  191. TRUE2:ACALL BARK
  192.          MOV A,R2
  193.          MOV R6,A
  194.          MOV R3,#02H
  195.          CLR OK
  196.          AJMP COUNT
  197. TRUE3:ACALL BARK
  198.          MOV A,R2
  199.          MOV R6,A
  200.         MOV R3,#03H
  201.         CLR OK
  202.         AJMP COUNT
  203. TRUE4:ACALL BARK
  204.         MOV A,R2
  205.         MOV R6,A
  206.         MOV R3,#04H
  207.         CLR OK  
  208.         AJMP COUNT
  209. TRUE5: ACALL BARK  
  210.         MOV A,R2
  211.         MOV R6,A
  212.         MOV R3,#05H
  213.         CLR OK
  214.         AJMP COUNT
  215. TRUE6: ACALL BARK  
  216.         MOV A,R2
  217.         MOV R6,A
  218.         MOV R3,#06H
  219.         CLR OK
  220.         AJMP COUNT
  221. TRUE7: ACALL BARK  
  222.         MOV A,R2
  223.         MOV R6,A
  224.         MOV R3,#07H
  225.         CLR OK
  226.         AJMP COUNT
  227. TRUE8: ACALL BARK  
  228.         MOV A,R2
  229.         MOV R6,A
  230.         MOV R3,#08H
  231.         CLR OK
  232.         AJMP COUNT
  233. ERROR: MOV R0,#00H
  234.         MOV TH1,#3CH
  235.         MOV TL1,#0B0H
  236.         MOV 34H,R3                 //犯規(guī)號數(shù)暫存與(34H)  
  237. HERE: MOV A,R0
  238.         CJNE A,#06H,FLASH         //0.3s向下運行->滅并停響
  239.         CLR RING  
  240.         MOV R3,#0AH
  241.         MOV R4,#0AH
  242.         MOV R5,#0AH              //三燈全滅
  243.         AJMP CHECK1  
  244. FLASH: CJNE A,#0CH,CHECK1        //下面是0.8s的情況,響并顯示號數(shù)并清R0,重新計
  245.         SETB RING
  246.         MOV R0,#00H
  247.         MOV R3,34H                //取回號數(shù)
  248.         MOV R5,#0BH
  249.         MOV R4,#0BH              //顯示FF和號數(shù)
  250.         AJMP CHECK1
  251. CHECK1: JNB P3.1,QUIT1
  252.         ACALL DISPLAY
  253.         AJMP HERE
  254. QUIT1:  CLR RING
  255.         CLR OK
  256.         AJMP START
  257. DISPLAY:MOV DPTR,#DAT1           //查表顯示程序,利用P0口做段選碼口輸出/P2低三位做位選碼輸出  
  258.         MOV A,R3
  259.         MOVC A,@A+DPTR
  260.         MOV P2,#0feH
  261.         MOV P0,A
  262.         ACALL DELAY
  263.         MOV DPTR,#DAT2
  264.         MOV A,R5
  265.         MOVC A,@A+DPTR
  266.         MOV P2,#0fdH
  267.         MOV P0,A
  268.         ACALL DELAY
  269.         MOV A,R4
  270.         MOVC A,@A+DPTR
  271.         MOV P2,#0fbH
  272.         MOV P0,A
  273. ……………………

  274. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
改2.0.zip (49.88 KB, 下載次數(shù): 43)




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久吹潮 | 国产成人精品在线播放 | 91视频一88av| 国产综合欧美 | 欧美视频中文字幕 | 欧美 日韩 在线播放 | 色婷婷一区 | 日韩视频免费在线 | 国产精品一区一区三区 | 看黄在线 | 懂色一区二区三区免费观看 | xxx视频| 精品国产一区二区三区观看不卡 | 毛片黄片免费看 | 国产成人精品久久二区二区91 | 99re免费| 欧美日韩国产一区二区三区不卡 | 欧美电影免费网站 | 国产视频一区二区三区四区五区 | 精品91视频 | 高清成人av| 久久久久午夜 | 国产午夜精品一区二区三区在线观看 | 久草网站| 久久免费看| 欧美一级全黄 | 一级毛片视频在线观看 | 日日干夜夜操天天操 | 国产999精品久久久久久 | 中文字幕免费视频 | 久久久久黄色 | 久久久久国产精品一区 | 国产95在线 | 视频一二区 | 中文字幕二区 | 日本免费在线 | 97精品超碰一区二区三区 | 国产h视频 | 搞黄视频免费看 | 欧美日韩国产一区二区 | 青青草视频免费观看 |