找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3667|回復(fù): 0
收起左側(cè)

這是我編的用小鍵盤(8279)控制步進電機的匯編程序

[復(fù)制鏈接]
ID:112317 發(fā)表于 2016-4-6 21:54 | 顯示全部樓層 |閱讀模式

這是我編的用小鍵盤(8279)控制步進電機的匯編程序
  1. Z8279 EQU 212H
  2. D8279 EQU 210H
  3. D8251 EQU 228H
  4. Z8251 EQU 22aH
  5. LEDMOD EQU 00 ;左邊輸入,八位顯示外部譯碼八位顯示
  6. LEDFEQ EQU 38H ;掃描頻率
  7. STACK SEGMENT STACK
  8. STA DW 512 DUP (?)
  9. TOP EQU LENGTH STA
  10. STACK ENDS
  11. DATA SEGMENT
  12. LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H
  13. DB 5EH,79H,71H
  14. MESS1 DB 0DH,0AH,0DH,0AH
  15. DB ' Speed-----Press 1~F',0DH,0AH
  16. DB ' Direction-----Press + OR -',0DH,0AH
  17. DB ' ESC-----Press 0',0DH,0AH,'



  18. MESS2 DB 0dh,' Dir Now----','



  19. SPDLY DB 1
  20. DIRE DB '+'
  21. DATA ENDS
  22. CODE SEGMENT
  23. ASSUME CS:CODE,DS:DATA,SS:STACK
  24. START: MOV AX,STACK ;初始化
  25. MOV SS,AX
  26. MOV SP,TOP
  27. MOV AX,DATA
  28. MOV DS,AX
  29. MOV DX,20BH ;8255初始化
  30. MOV AL,80H
  31. OUT DX,AL
  32. MOV CX,100
  33. LOOP $
  34. MOV CX,05H
  35. NEXT:PUSH CX
  36. MOV DX,Z8251          ;初始化8251
  37. MOV AL,00H
  38. OUT DX,AL
  39. MOV CX,04H
  40. LOOP $
  41. OUT DX,AL
  42. MOV CX,04H
  43. LOOP $
  44. OUT DX,AL
  45. MOV CX,04H
  46. LOOP $
  47. MOV AL,40H
  48. OUT DX,AL
  49. MOV CX,100
  50. LOOP $
  51. MOV AL,0CEH           ;異步方式,設(shè)置為8個數(shù)據(jù)位,兩個停止位波特率因子為16
  52. OUT DX,AL             ;無奇偶校驗位
  53. MOV CX,100
  54. LOOP $
  55. MOV AL,25H            ;設(shè)為請求發(fā)送,允許發(fā)送,允許接收狀態(tài)
  56. OUT DX,AL
  57. MOV CX,100
  58. LOOP $
  59. POP CX
  60. LOOP NEXT
  61. NOP               
  62. MOV DX,Z8279
  63. MOV AL,LEDMOD
  64. OUT DX,AL
  65. MOV AL,LEDFEQ
  66. OUT DX,AL
  67. MOV DX,D8279
  68. MOV AL,7FH
  69. OUT DX,AL
  70. MOV DX,D8279
  71. MOV AL,7FH
  72. OUT DX,AL
  73. MOV DX,D8279
  74. MOV AL,7DH
  75. OUT DX,AL
  76. MOV DX,D8279
  77. MOV AL,7FH
  78. OUT DX,AL
  79. MOV DX,D8279
  80. MOV AL,70H
  81. OUT DX,AL
  82. MOV DX,D8279
  83. MOV AL,5EH
  84. OUT DX,AL
  85. MOV DX,D8279
  86. MOV AL,79H
  87. OUT DX,AL
  88. MOV DX,D8279
  89. MOV AL,77H
  90. OUT DX,AL ;以上為寫(AEDK8688)
  91. NOP
  92. BG:MOV DX,Z8279
  93. MOV AL,0C2H
  94. OUT DX,AL ;置空FIFO寄存器
  95. PUSH DX
  96. LEA DX,MESS1 ;顯示信息1
  97. MOV AH,09H
  98. INT 21H
  99. LEA DX,MESS2
  100. MOV AH,09H
  101. INT 21H
  102. MOV DL,DIRE ;顯示方向信息
  103. MOV AH,06H
  104. INT 21H
  105. POP DX
  106. WAIIT:MOV AH,0BH
  107. INT 21H
  108. CMP AL,0FFH;有鍵輸入則為0FFH
  109. JNE WAT;無鍵入轉(zhuǎn)
  110. L3:MOV AH,08H
  111. INT 21H
  112. L4:CMP AL,'+'
  113. JE L0
  114. CMP AL,'-'
  115. JE L1
  116. CMP AL,'9'
  117. JNA DA
  118. SUB AL,37H
  119. CMP AL,0AH
  120. Jb WAIIT
  121. CMP AL,0FH
  122. Ja WAIIT
  123. JMP JIAN
  124. DA: SUB AL,30H
  125. CMP AL,00H
  126. JB WAT
  127. JMP PAN
  128. WAT:NOP
  129. IN AL,DX
  130. MOV BL,AL
  131. AND AL,80H
  132. CMP AL,80H
  133. JE WAT ;FIFO正在清除期間則跳轉(zhuǎn)等待
  134. MOV AL,BL
  135. AND AL,0FH
  136. CMP AL,00H
  137. JE WAIIIT ;無鍵按下轉(zhuǎn)
  138. BG3:MOV DX,Z8279
  139. MOV AL,40H ;寫 讀FIFO RAM命令字
  140. OUT DX,AL
  141. MOV DX,D8279 ;讀入FIFO RAM內(nèi)容
  142. IN AL,DX
  143. NOP
  144. JMP PAN
  145. WAIIIT:PUSH DX
  146. MOV DX,Z8251
  147. MOV AH,02H
  148. IN AL,DX             ;有數(shù)據(jù)送到嗎?
  149. AND AL,AH
  150. JZ WAIIT               ;讀入寄存器空,沒有數(shù)據(jù)送到則跳轉(zhuǎn)至發(fā)送
  151. L5:MOV DX,D8251          ;有數(shù)據(jù)送到則從數(shù)據(jù)緩沖區(qū)讀入
  152. IN AL,DX
  153. JMP L4               
  154. PAN:CMP AL,00H ;是結(jié)束符則結(jié)束
  155. JZ AK
  156. JIAN:MOV BL,AL ; 查表,將鍵碼放入AL中
  157. CMP AL,0fH;速度不在1~15之間
  158. JA BG1
  159. MOV SPDLY,AL;
  160. JMP BB0
  161. L4:JMP BG
  162. BG1: CMP AL,13H ;方向控制鍵
  163. JE L0
  164. CMP AL,12H
  165. JNE L4
  166. L1:MOV DIRE,'-'
  167. JMP BG2
  168. L0:MOV DIRE,'+'
  169. BG2:push dx
  170. LEA DX,MESS2
  171. MOV AH,09H
  172. INT 21H
  173. MOV DL,DIRE;顯示方向信息
  174. MOV AH,06H
  175. INT 21H
  176. POP DX
  177. MOV    DX,Z8279          ;清FIFO RAM寄存器
  178. MOV    AL,0C2H
  179. OUT    DX,AL
  180. JMP BB1
  181. L2:JMP L3
  182. BB0: mov cx,08h
  183. mov al,00h
  184. clear: MOV DX,D8279
  185. out dx,al
  186. loop clear
  187. mov dx,z8279
  188. mov al,83h
  189. out dx,al
  190. MOV AL,BL
  191. LEA BX,LED
  192. XLAT
  193. MOV DX,D8279 ;將AL中內(nèi)容寫到數(shù)碼管上
  194. OUT DX,AL
  195. MOV    DX,Z8279          ;清FIFO RAM寄存器
  196. MOV    AL,0C2H
  197. OUT    DX,AL
  198. JMP BB1
  199. AK: JMP FINI
  200. BG4:JMP BG3
  201. L6:JMP L5
  202. BB1: MOV AH,0BH              ;判斷PC機是否有鍵按下
  203. INT 21H
  204. CMP AL,0FFH
  205. JE L2
  206. MOV DX,Z8279
  207. IN AL,DX
  208. NOP
  209. AND AL,0FH
  210. CMP AL,00H
  211. JNE BG4
  212. MOV DX,Z8251
  213. MOV AH,02H
  214. IN AL,DX             ;有數(shù)據(jù)送到嗎?
  215. AND AL,AH
  216. JNZ L6            
  217. XOR CX,CX
  218. MOV CL,SPDLY
  219. CALL DELAY
  220. MOV DX,208H
  221. MOV AL,00000001B
  222. OUT DX,AL
  223. CMP DIRE,'+' ;控制轉(zhuǎn)向
  224. JNE BB2
  225. XOR CX,CX
  226. MOV CL,SPDLY
  227. CALL DELAY
  228. MOV DX,208H
  229. MOV AL,00000010B
  230. OUT DX,AL
  231. XOR CX,CX
  232. MOV CL,SPDLY
  233. CALL DELAY
  234. MOV DX,208H
  235. MOV AL,00000100B
  236. OUT DX,AL
  237. XOR CX,CX
  238. MOV CL,SPDLY
  239. CALL DELAY
  240. MOV DX,208H
  241. MOV AL,00001000B
  242. OUT DX,AL
  243. JMP BB1
  244. BB2:XOR CX,CX
  245. MOV CL,SPDLY
  246. CALL DELAY
  247. MOV DX,208H
  248. MOV AL,00001000B
  249. OUT DX,AL
  250. XOR CX,CX
  251. MOV CL,SPDLY
  252. CALL DELAY
  253. MOV DX,208H
  254. MOV AL,00000100B
  255. OUT DX,AL
  256. XOR CX,CX
  257. MOV CL,SPDLY
  258. CALL DELAY
  259. MOV DX,208H
  260. MOV AL,00000010B
  261. OUT DX,AL
  262. JMP BB1
  263. FINI: MOV DX,Z8279 ;清FIFO寄存器并關(guān)蜂鳴器
  264. MOV AL,0C2H
  265. OUT DX,AL
  266. MOV AH,4CH
  267. INT 21H
  268. DELAY PROC NEAR
  269.       PUSH CX
  270.       MOV CX,80                           ;延時子程序
  271. DELAY1: PUSH CX
  272.       MOV CX,2000H
  273.       LOOP $
  274.       POP CX
  275.       LOOP DELAY1
  276.       POP CX
  277.       LOOP DELAY
  278.       RET
  279. DELAY ENDP
  280. CODE ENDS
  281. END START
復(fù)制代碼



回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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