基于8255的步进电机控制系统设计内容摘要:

************************************************************。 初始化 8255,使 8255 的 A 口输出 .。 ************************************************************************************** MOV DX,CONTRL。 8255 的控制寄存器地址送 DX MOV AL,MODE。 8255 的 A 口输出 ,故初始 化控制字为 80H OUT DX,AL。 将控制字从 8255 输出以配置 8255 的工作方式 MOV DX,CTL。 将 A 口地址送 DX MOV AL,0。 将 0 送 AL OUT DX,AL。 8255 的端口写 0 以实现初始化 微机原理与接口 综合实验 实验设计 9 MOV DLY_C,300H。 延时初始值 MOV CX,QS。 将步进电机的圈数 300 送 CX。 **************************************************************************************。 以下程序段实现的功能是让电机正向加速 ,速度达到最大值后匀速转动 .。 ************************************************************************************** ZZ:MOV BX,0。 将 0 送 BX,让电机的初始步为 A NEXT1:MOV DX,CTL。 将 8255 的 A 口地址送 DX MOV AL,SOURCE[BX]。 将电机的步序送 AL OUT DX,AL。 将步序表中的第一个步序通过 A 口输出 CALL DELAY。 调用延时子程序 ,用来控制电机转速 INC BX。 BX 加 1,为取下一个步序做准备 CMP BX,7 JBE NEXT1。 判断电机是否已经走完 8 拍 PUSH CX。 保存 CX 的值 ,因为下面还要用到 CX MOV CX,DLY_C。 将 DLY_C 的值送 CX DEC CX。 CX(即 DLY_C)减 1 以实现加速 CMP CX,100H。 CX与 100H比较 ,判断电机转速是否已经达到最大值 微机原理与接口 综合实验 实验设计 10 JNE NN1。 若电机转速尚未达到最大值 ,则转向 NN1 INC CX。 若电机转速已经达到最大值 ,则 CX 加 1 以实现电机匀速转动 NN1:MOV DLY_C,CX。 将 CX 的值送 DLY_C 以实现在一个循环 POP CX。 恢复 CX LOOP ZZ。 CX 减 1,让电机转下一圈。 **************************************************************************************。 以下代码段 调用 5 次延时子程序以实现延时 5 秒 .正式调试时时间稍大于 5秒,。 可见用软件延时不能实现精确延时 .。 ************************************************************************************** TZ:MOV DX,CTL。 将 8255 的 A 口地址送 DX MOV AL,0。 将 0 送 AL OUT DX,AL。 将 0 从 A 口输出 ,使电机静止不转 CALL DELAY1S。 调用 5 次延时 1 秒子程序 ,总共延时 5 秒 CALL DELAY1S CALL DELAY1S CALL DELAY1S CALL DELAY1S 微机原理与接口 综合实验 实验设计。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。