找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2001|回复: 0
打印 上一主题 下一主题
收起左侧

求该单片机程序流程框图 和 I/0口

[复制链接]
跳转到指定楼层
楼主


  1. KEY EQU             P1         ;

  2. SQ  EQU             P0         ;

  3. FLAG       BIT 2AH.0   ;走动标志

  4. DLY        BIT 2AH.1   ;延时5秒起动标志

  5. FLAG_DLY   BIT 2AH.2   ;延时5秒标志

  6. FLAG_STOP  BIT 2AH.3   ;急停标志

  7. FLAG_PRO   BIT 2AH.4   ;禁止按键标志

  8. FLAG_DANBU   BIT 2AH.5 ;单步操作标志

  9. ORG   0000H

  10. AJMP INIT

  11. ORG   000BH

  12. AJMP TIME0

  13. ORG   0030H

  14. INIT:

  15. MOV SP,#30H

  16. MOV SCON,#0H

  17. MOV TMOD,#01H

  18. MOV TH0,#03CH

  19. MOV TL0,#0B0H

  20. MOV R4,#0

  21. MOV R5,#2           ;上下循环两次

  22. MOV R7,#2      ;

  23. MOV 50H,#0     ;

  24. MOV 52H,#0     ;

  25. //SETB FLAG

  26. SETB EA

  27. SETB ET0

  28. SETB TR0

  29. ACALL DISPLAY  ;

  30. CLR P2.0

  31. ////////////////////////////////////

  32. MAIN:

  33. JB FLAG,GO1SET         ;启动转,否则下一步

  34. MOV R5,#1

  35. CLR FLAG_PRO         ;取消按键禁止

  36. CJNE R4,#1,GOA         ;对比跳转相应工序

  37. AJMP GO1

  38. GOA:

  39. CJNE R4,#2,GOB

  40. AJMP GO2

  41. GOB:

  42. CJNE R4,#3,GOC

  43. AJMP GO3

  44. GOC:

  45. CJNE R4,#4,GOD

  46. AJMP GO4

  47. GOD:

  48. SJMP MAIN

  49. GO1SET:

  50. MOV P2,#0FEH        ;启动前清除指示

  51. MOV R5,#2                ;两次上下

  52. GO1:

  53. MOV R4,#0                ;清0防止指标混乱

  54. ACALL DELYS

  55. //ACALL DELYS

  56. CLR P2.0                ;下降

  57. JB FLAG_STOP,$        ;急停

  58. ACALL DELYS

  59. //ACALL DELYS

  60. CLR P2.4

  61. JB FLAG_STOP,$

  62. ACALL DELYS

  63. //ACALL DELYS

  64. CLR P2.5

  65. JB FLAG_STOP,$

  66. ACALL DELYS

  67. //ACALL DELYS

  68. CLR P2.6

  69. JB FLAG_STOP,$

  70. JB FLAG_DANBU,MAIN;单步停止

  71. JB SQ.2,$              ;限位

  72. GO2:

  73. MOV R4,#0

  74. ACALL DELYS

  75. ACALL DELYS

  76. SETB P2.6                ;上升

  77. JB FLAG_STOP,$

  78. ACALL DELYS

  79. //ACALL DELYS

  80. SETB P2.5

  81. JB FLAG_STOP,$

  82. ACALL DELYS

  83. //ACALL DELYS

  84. SETB P2.4

  85. JB FLAG_STOP,$

  86. ACALL DELYS

  87. //ACALL DELYS

  88. //SETB P2.0

  89. JB FLAG_STOP,$

  90. JB FLAG_DANBU,MAIN

  91. JB SQ.1,$

  92. DJNZ R5,GO1

  93. GO3:

  94. MOV R4,#0

  95. CLR P2.0                ;右移

  96. JB FLAG_STOP,$

  97. ACALL DELYS

  98. //ACALL DELYS

  99. CLR P2.1

  100. JB FLAG_STOP,$

  101. ACALL DELYS

  102. //ACALL DELYS

  103. CLR P2.2

  104. JB FLAG_STOP,$

  105. ACALL DELYS

  106. //ACALL DELYS

  107. CLR P2.3

  108. JB FLAG_STOP,$

  109. JB FLAG_DANBU,NEXT

  110. JB SQ.3,$

  111. SETB DLY                  ;延时5S

  112. JNB FLAG_DLY,$

  113. CLR FLAG_DLY

  114. CLR DLY

  115. GO4:

  116. MOV R4,#0

  117. ACALL DELYS

  118. //ACALL DELYS

  119. SETB P2.3                ;左移

  120. JB FLAG_STOP,$

  121. ACALL DELYS

  122. //ACALL DELYS

  123. SETB P2.2

  124. JB FLAG_STOP,$

  125. ACALL DELYS

  126. //ACALL DELYS

  127. SETB P2.1

  128. JB FLAG_STOP,$

  129. ACALL DELYS

  130. //ACALL DELYS

  131. //SETB P2.0

  132. JB FLAG_STOP,$

  133. JB FLAG_DANBU,NEXT

  134. JB SQ.4,$

  135. INC R3                   ;计步器

  136. ACALL DISPLAY  ;显示

  137. NEXT:

  138. AJMP MAIN


  139. /////////////////////////////////////////

  140. K1:                   ;

  141. JNB KEY.0,K1A;检测P0.0口      

  142. AJMP  K2

  143. K1A:

  144. ACALL DELY           ;延时去抖

  145. JNB KEY.0,K1B;检测P0.0口      

  146. AJMP  K2

  147. K1B:

  148. JNB KEY.0,K1B;等待按键

  149. JB FLAG,K2

  150. JB FLAG_PRO,K2

  151. MOV P2,#0EH

  152. MOV R4,#2

  153. MOV R5,#1

  154. SETB FLAG_DANBU

  155. RET

  156. K2:                   ;

  157. JNB KEY.1,K2A        

  158. AJMP  K3

  159. K2A:

  160. ACALL DELY

  161. JNB KEY.1,K2B

  162. AJMP  K3

  163. K2B:

  164. JNB KEY.1,K2B

  165. JB FLAG,K3

  166. JB FLAG_PRO,K3

  167. MOV P2,#0FEH

  168. MOV R4,#1

  169. MOV R5,#1

  170. SETB FLAG_DANBU

  171. RET

  172. K3:                        ;

  173. JNB KEY.2,K3A

  174. AJMP  K4

  175. K3A:

  176. ACALL DELY

  177. JNB KEY.2,K3B

  178. AJMP  K4

  179. K3B:

  180. JNB KEY.2,K3B

  181. JB FLAG,K4

  182. JB FLAG_PRO,K4

  183. MOV P2,#0F0H

  184. MOV R4,#4

  185. MOV R5,#1

  186. SETB FLAG_DANBU

  187. RET

  188. K4:

  189. JNB KEY.3,K4A

  190. AJMP  K5

  191. K4A:

  192. ACALL DELY

  193. JNB KEY.3,K4B

  194. AJMP  K5

  195. K4B:

  196. JNB KEY.3,K4B

  197. JB FLAG,K5

  198. JB FLAG_PRO,K5

  199. MOV P2,#0FEH

  200. MOV R4,#3

  201. MOV R5,#1

  202. SETB FLAG_DANBU

  203. RET

  204. K5:

  205. JNB KEY.4,K5A

  206. AJMP  K6

  207. K5A:

  208. ACALL DELY

  209. JNB KEY.4,K5B

  210. AJMP  K6

  211. K5B:

  212. JNB KEY.4,K5B

  213. SETB FLAG          ;启动

  214. SETB FLAG_PRO ;禁止按键作用

  215. CLR FLAG_STOP ;取消急停

  216. CLR FLAG_DANBU;取消单步

  217. RET

  218. K6:

  219. JNB KEY.5,K6A

  220. AJMP  K7

  221. K6A:

  222. ACALL DELY

  223. JNB KEY.5,K6B

  224. AJMP  K7

  225. K6B:

  226. JNB KEY.5,K6B

  227. CLR FLAG       ;停止运行

  228. //SETB FLAG_PRO

  229. RET

  230. K7:

  231. JNB KEY.6,K7A

  232. RET

  233. K7A:

  234. ACALL DELY

  235. JNB KEY.6,K7B

  236. RET

  237. K7B:

  238. JNB KEY.6,K7B         

  239. SETB FLAG_STOP         ;急停

  240. RET


  241. DELY:MOV R7,#10         ;延时0.5ms

  242. DLY0:MOV R6,#50     

  243. DLY1:DJNZ R6,DLY1

  244. DJNZ R7,DLY0

  245. RET

  246. DELYS:MOV R7,#255         ;延时

  247. DLY2:MOV R6,#255     

  248. DLY3:DJNZ R6,DLY3

  249. DJNZ R7,DLY2

  250. RET

  251. DISPLAY: ;显示

  252. MOV R7,#2      ;数码管位数

  253. MOV A,R3

  254. MOV B,#10

  255. DIV AB

  256. MOV 51H,A

  257. MOV 50H,B

  258. MOV  DPTR,#TABLE

  259. MOV R0,#50H

  260. LED1:

  261. MOV A,@R0

  262. MOVC A,@A+DPTR         //查表得段码

  263. MOV SBUF,A

  264. STOP:JNB TI,STOP

  265. CLR TI

  266. INC R0

  267. DJNZ R7,LED1

  268. RET


  269. TIME0:                         ;延时2S

  270. MOV TH0,#03CH

  271. MOV TL0,#0B0H

  272. ACALL K1

  273. JNB DLY,EXIT

  274. INC R2

  275. CJNE R2,#75,EXIT ;5秒

  276. SETB FLAG_DLY

  277. MOV R2,#0

  278. EXIT:

  279. RETI

  280. TABLE:

  281. DB 3fh,06h,5bh,4fh

  282. DB 66h,6dh,7dh,07h

  283. DB 7fh,6fh,77h,7ch

  284. DB 39h,5eh,79h,71h


  285. END
复制代码





分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表