找回密码
 立即注册

QQ登录

只需一步,快速开始

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

这是我编的用小键盘(8279)控制步进电机的汇编程序

[复制链接]
跳转到指定楼层
楼主
ID:112317 发表于 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           ;异步方式,设置为8个数据位,两个停止位波特率因子为16
  52. OUT DX,AL             ;无奇偶校验位
  53. MOV CX,100
  54. LOOP $
  55. MOV AL,25H            ;设为请求发送,允许发送,允许接收状态
  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;无键入转
  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正在清除期间则跳转等待
  134. MOV AL,BL
  135. AND AL,0FH
  136. CMP AL,00H
  137. JE WAIIIT ;无键按下转
  138. BG3:MOV DX,Z8279
  139. MOV AL,40H ;写 读FIFO RAM命令字
  140. OUT DX,AL
  141. MOV DX,D8279 ;读入FIFO RAM内容
  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             ;有数据送到吗?
  149. AND AL,AH
  150. JZ WAIIT               ;读入寄存器空,没有数据送到则跳转至发送
  151. L5:MOV DX,D8251          ;有数据送到则从数据缓冲区读入
  152. IN AL,DX
  153. JMP L4               
  154. PAN:CMP AL,00H ;是结束符则结束
  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中内容写到数码管上
  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             ;有数据送到吗?
  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,'+' ;控制转向
  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寄存器并关蜂鸣器
  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
复制代码



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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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