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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8828|回復: 7
打印 上一主題 下一主題
收起左側

單片機課程設計搶答器word 含匯編語言源程序,仿真

  [復制鏈接]
跳轉到指定樓層
樓主
搶答器。內含源文件,仿真,課程設計word,程序軟件為keil,歡迎分享

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載):


單片機匯編語言源程序如下:
  1. OK EQU 20H;搶答開始標志位
  2. RING EQU 22H;響鈴標志位
  3. ORG 0000H
  4. AJMP MAIN
  5. ORG 0003H
  6. AJMP INT0SUB
  7. ORG 000BH
  8. AJMP T0INT
  9. ORG 0013H
  10. AJMP INT1SUB
  11. ORG 001BH
  12. AJMP T1INT
  13. ORG 0040H
  14. MAIN: MOV R1,#30;初設搶答時間為30s
  15. MOV R2,#60;初設答題時間為60s
  16. MOV TMOD,#11H;設置未定時器/模式1
  17. MOV TH0,#0F0H
  18. MOV TL0,#0FFH;越高發聲頻率越高,越尖
  19. MOV TH1,#3CH
  20. MOV TL1,#0B0H;50ms為一次溢出中斷
  21. SETB EA
  22. SETB ET0
  23. SETB ET1
  24. SETB EX0
  25. SETB EX1;允許四個中斷,T0/T1/INT0/INT1
  26. CLR OK
  27. CLR RING
  28. SETB TR1
  29. SETB TR0;一開始就運行定時器,以開始顯示FFF.如果想重新計數,重置TH1/TL1就可以了
  30. ;=====查詢程序=====
  31. START: MOV R5,#0BH
  32. MOV R4,#0BH
  33. MOV R3,#0BH
  34. ACALL DISPLAY;未開始搶答時候顯示FFF
  35. JB P3.0,NEXT;ddddddd
  36. ACALL DELAY
  37. JB P3.0,NEXT;去抖動,如果"開始鍵"按下就向下執行,否者跳到非法搶答查詢
  38. ACALL BARK;按鍵發聲
  39. MOV A,R1
  40. MOV R6,A;送R1->R6,因為R1中保存了搶答時間
  41. SETB OK;搶答標志位,用于COUNT只程序中判斷是否查詢搶答
  42. MOV R7,#01H ;讀搶答鍵數據信號標志,這里表示只讀一次有用信號
  43. MOV R3,#0AH;搶答只顯示計時,滅號數
  44. AJMP COUNT;進入倒計時程序,"查詢有效搶答的程序"在COUNT里面
  45. NEXT: JNB P1.0,FALSE1
  46. JNB P1.1,FALSE2
  47. JNB P1.2,FALSE3
  48. JNB P1.3,FALSE4
  49. JNB P1.4,FALSE5
  50. JNB P1.5,FALSE6
  51. JNB P1.6,FALSE7
  52. JNB P1.7,FALSE8
  53. AJMP START
  54. ;=====非法搶答處理程序=====
  55. FALSE1: MOV R3,#01H
  56. AJMP ERROR
  57. FALSE2: MOV R3,#02H
  58. AJMP ERROR
  59. FALSE3: MOV R3,#03H
  60. AJMP ERROR
  61. FALSE4: MOV R3,#04H
  62. AJMP ERROR
  63. FALSE5: MOV R3,#05H
  64. AJMP ERROR
  65. FALSE6: MOV R3,#06H
  66. AJMP ERROR
  67. FALSE7: MOV R3,#07H
  68. AJMP ERROR
  69. FALSE8: MOV R3,#08H
  70. AJMP ERROR

  71. ;=====INT0(搶答時間R1調整程序)=====
  72. INT0SUB:MOV A,R1
  73. MOV B,#0AH
  74. DIV AB
  75. MOV R5,A
  76. MOV R4,B
  77. MOV R3,#0AH
  78. ACALL DISPLAY;先在兩個時間LED上顯示R1
  79. JNB P3.4,INC0;P3.4為+1s鍵,如按下跳到INCO
  80. JNB P3.5,DEC0;P3.5為-1s鍵,如按下跳到DECO
  81. JNB P3.1,BACK0;P3.1為確定鍵,如按下跳到BACKO
  82. AJMP INT0SUB
  83. INC0: MOV A,R1
  84. CJNE A,#63H,ADD0;如果不是99,R2加1,如果加到99,R1就置0,重新加起。
  85. MOV R1,#00H
  86. ACALL DELAY1
  87. AJMP INT0SUB
  88. ADD0: INC R1
  89. ACALL DELAY1
  90. AJMP INT0SUB
  91. DEC0: MOV A,R1
  92. JZ SETR1;如果R1為0, R1就置99,
  93. DEC R1
  94. ACALL DELAY1
  95. AJMP INT0SUB
  96. SETR1: MOV R1,#63H
  97. ACALL DELAY1
  98. AJMP INT0SUB
  99. BACK0: RETI
  100. ;=====INT1(回答時間R2調整程序)=====
  101. INT1SUB:MOV A,R2
  102. MOV B,#0AH
  103. DIV AB
  104. MOV R5,A
  105. MOV R4,B
  106. MOV R3,#0AH
  107. ACALL DISPLAY
  108. JNB P3.4,INC1
  109. JNB P3.5,DEC1
  110. JNB P3.1,BACK1
  111. AJMP INT1SUB
  112. INC1: MOV A,R2
  113. CJNE A,#63H,ADD1
  114. MOV R2,#00H
  115. ACALL DELAY1
  116. AJMP INT1SUB
  117. ADD1: INC R2
  118. ACALL DELAY1
  119. AJMP INT1SUB
  120. DEC1: MOV A,R2
  121. JZ SETR2
  122. DEC R2
  123. ACALL DELAY1
  124. AJMP INT1SUB
  125. SETR2: MOV R2,#63H
  126. ACALL DELAY1
  127. AJMP INT1SUB
  128. BACK1: RETI
  129. ;=====倒計時程序(搶答倒計時和回答倒計時都跳到改程序)=====
  130. REPEAT:MOV A,R2 ;使用錦囊時重新計時
  131. MOV R6,A
  132. CLR RING
  133. COUNT: MOV R0,#00H;重置定時器中斷次數
  134. MOV TH1,#3CH
  135. MOV TL1,#0B0H;重置定時器
  136. RECOUNT:MOV A,R6;R6保存了倒計時的時間,之前先將搶答時間或回答時間給R6
  137. MOV B,#0AH
  138. DIV AB;除十分出個位/十位
  139. MOV 30H,A;十位存于(30H)
  140. MOV 31H,B;個位存于(31H)
  141. MOV R5,30H;取十位
  142. MOV R4,31H;取個位
  143. MOV A,R6
  144. SUBB A,#07H
  145. JNC LARGER;大于5s跳到LARGER,小于等于5s會提醒
  146. MOV A,R0
  147. CJNE A,#0AH,FULL;1s中0.5s向下運行
  148. CLR RING
  149. AJMP CHECK
  150. FULL: CJNE A,#14H,CHECK;下面是1s的情況,響并顯示號數并清R0,重新計
  151. SETB RING
  152. MOV A,R6
  153. JZ QUIT;計時完畢
  154. MOV R0,#00H
  155. DEC R6;一秒標志減1
  156. AJMP CHECK
  157. LARGER: MOV A,R0
  158. CJNE A,#14H,CHECK;如果1s向下運行,否者跳到查"停/顯示"
  159. DEC R6;計時一秒R6自動減1
  160. MOV R0,#00H
  161. CHECK: JNB P3.1,QUIT;如按下停止鍵退出
  162. JNB OK,CHECKK ;只在回答倒計時才有效
  163. AJMP NEXTT
  164. CHECKK:JNB P3.0,REPEAT ;判斷是否使用錦囊
  165. NEXTT: ACALL DISPLAY
  166. JB OK,ACCOUT;如果是搶答倒計時,如是則查詢搶答,否者跳過查詢繼續倒數(這里起到鎖搶答作用)
  167. AJMP RECOUNT
  168. ACCOUT:
  169. MOV A,36H
  170. JNB ACC.0,TRUE1
  171. JNB ACC.1,TRUE2
  172. JNB ACC.2,TRUE3
  173. JNB ACC.3,TRUE4
  174. JNB ACC.4,TRUE5
  175. JNB ACC.5,TRUE6
  176. JNB ACC.6,TZ1
  177. JNB ACC.7,TZ2
  178. AJMP RECOUNT
  179. TZ1:JMP TRUE7
  180. TZ2:JMP TRUE8
  181. QUIT: CLR OK;如果按下了"停止鍵"執行的程序
  182. CLR RING
  183. AJMP START
  184. ;=====正常搶答處理程序=====
  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. ;=====犯規搶答程序=====
  234. ERROR: MOV R0,#00H
  235. MOV TH1,#3CH
  236. MOV TL1,#0B0H
  237. MOV 34H,R3;犯規號數暫存與(34H)
  238. HERE: MOV A,R0
  239. CJNE A,#06H,FLASH;0.3s向下運行->滅并停響
  240. CLR RING
  241. MOV R3,#0AH
  242. MOV R4,#0AH
  243. MOV R5,#0AH;三燈全滅
  244. AJMP CHECK1
  245. FLASH: CJNE A,#0CH,CHECK1;下面是0.8s的情況,響并顯示號數并清R0,重新計
  246. SETB RING
  247. MOV R0,#00H
  248. MOV R3,34H;取回號數
  249. MOV R5,#0BH
  250. MOV R4,#0BH;顯示FF和號數
  251. AJMP CHECK1
  252. CHECK1: JNB P3.1,QUIT1
  253. ACALL DISPLAY
  254. AJMP HERE
  255. QUIT1: CLR RING
  256. CLR OK
  257. AJMP START
  258. ;=====顯示程序=====
  259. DISPLAY:MOV DPTR,#DAT1;查表顯示程序,利用P0口做段選碼口輸出/P2低三位做位選碼輸出,
  260. MOV A,R3
  261. MOVC A,@A+DPTR
  262. MOV P2,#0feH
  263. MOV P0,A
  264. ACALL DELAY2
  265. MOV DPTR,#DAT2
  266. MOV A,R5
  267. MOVC A,@A+DPTR
  268. MOV P2,#0fdH
  269. MOV P0,A
  270. ACALL DELAY2
  271. MOV A,R4
  272. MOVC A,@A+DPTR
  273. MOV P2,#0fbH
  274. MOV P0,A
  275. ACALL DELAY2
  276. RET
  277. DAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H
  278. ;"滅","1","2","3","4","5","6","7","8","9","滅","F"
  279. DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H
  280. ;第一個為零,其他與上相同,因為十位如果為零顯示熄滅
  281. ;====加減時間延時(起到不會按下就加N個數)======
  282. DELAY1: MOV 35H,#08H
  283. LOOP0: ACALL DISPLAY
  284. DJNZ 35H,LOOP0
  285. RET
  286. ;=====延時4236個機器周期(去抖動用到)=====
  287. DELAY: MOV 32H,#12H
  288. LOOP: MOV 33H,#0AFH
  289. LOOP1: DJNZ 33H,LOOP1
  290. DJNZ 32H,LOOP
  291. RET
  292. ;=====延時4236個機器周期(顯示用到)=====
  293. DELAY2: MOV 32H,#43H
  294. ……………………

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

所有資料51hei提供下載:
搶答器.zip (43.83 KB, 下載次數: 136)

單片機課程設計2.rar (719.13 KB, 下載次數: 144)


評分

參與人數 1黑幣 +6 收起 理由
吉玉的呆車 + 6 很給力!

查看全部評分

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

使用道具 舉報

沙發
ID:1 發表于 2017-6-4 17:23 | 只看該作者
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

板凳
ID:486665 發表于 2019-3-8 09:10 來自手機 | 只看該作者
單片機搶答器
回復

使用道具 舉報

地板
ID:563992 發表于 2019-6-16 22:10 | 只看該作者
單片機搶答器
回復

使用道具 舉報

5#
ID:567859 發表于 2019-6-20 20:56 | 只看該作者
發生關鍵仿真錯誤怎么回事
回復

使用道具 舉報

6#
ID:870579 發表于 2020-12-29 21:15 | 只看該作者
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

7#
ID:876573 發表于 2021-5-11 21:59 | 只看該作者
2個地方有bug:
1、搶答時間調整:按下加1s按鍵或者減1s按鍵基本都是加2秒或者減2秒,有時候加5秒或者減3秒的情況
2、答題時間調整模塊:問題同上即時間+和時間-是不穩定的,希望樓主能不能指點一下是什么原因?謝謝
回復

使用道具 舉報

8#
ID:876573 發表于 2021-5-11 22:01 | 只看該作者
2個地方有bug:
1:答題時間:按下時間+或者時間-按鍵基本都是加2秒或者減2秒,甚至是突然加5秒或者減3秒的情況,很不穩定;
2、搶答時間調整:問題同上

希望樓主幫忙分析一下是什么原因以及如何解決,謝謝!!
回復

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人片网址 | 毛片网站在线观看 | www国产成人免费观看视频,深夜成人网 | 亚洲综合精品 | 国产成人精品久久久 | 亚洲一区久久久 | 操久久 | 日韩1区2区| 国产精品人人做人人爽 | 久久高清国产视频 | 国产免费一区二区三区免费视频 | 插插宗合网 | 国产激情在线 | 日韩视频一区二区 | 日韩欧美在 | 97伦理电影 | 日韩和的一区二区 | 国产精品成人一区二区三区夜夜夜 | 99国产精品99久久久久久粉嫩 | 日韩一区二区三区视频在线观看 | 欧美成人一级 | 欧美一级黄色免费 | 男人视频网站 | 久久免费精品 | 日日操视频| 99精品免费在线观看 | 亚洲欧美日韩网站 | 精品国产欧美一区二区 | 国产 日韩 欧美 在线 | 亚洲天堂一区二区 | 国产精品一区二区日韩 | 91高清在线视频 | 亚洲h视频 | 免费看黄视频网站 | 久久久91精品国产一区二区三区 | 午夜男人天堂 | 久国产视频| 日本三级网址 | 黄色毛片在线播放 | 亚洲国产精品va在线看黑人 | 亚洲高清在线观看 |