您现在的位置:

逐点比较法直线插补汇编语言程序(MCS-8031)

根据该插补软件框图(参见http://www.busnc.com/ly/zhudian/yuanli.htm),可编制逐点比较法第一象限直线插补汇编语言源程序(本程序指令系统采用MCS8031,仅供参考):

LP:MOV SP,#60H   定义堆栈指针

   MOV 4AH,#00H  偏差单元清零

   MOV 49H,#00H

   MOV 48H,#01H  初始化XY电动机

   MOV 47H,#02H

   MOV A,4EH     计算终点判别,Xe+Ye之低位

   ADD A,4CH

   MOV 50H,A

   MOV A,4DH     Xe+Ye之高位

   ADDC A,4BH    低位相加,可能产生进位

   MOV 4FH,A

   MOV A,#03H    XY电动机上电

   MOV DPTR,#0030H

   MOVX @DPTR,A

LP2:ACALL DL0    延时子程序

   MOV A,49H     取偏差F的高8位

   JB ACC.7,LP4  偏差F< 0,去LP4

   ACALL XMP     F>=0,调X电动机正转子程序

   CLR C         计算新偏差F值,F=F-Ye

   MOV A,4AH

   SUBB A,4CH    可向高位字节借位

   MOV 4AH,A

   MOV A,49H

SUBB A,4BH

   MOV 49H,A

LP3:CLR C        终判值减1

   MOV A,50H

   SUBB A,#01H      可向高位字节借位

   MOV 50H,A

   MOV A,4FH

   SUBB A,#00H      考虑低位字节借位

   MOV 4FH,A     终判值判零

   ORL A,50H      

   JNZ LP2            终判值不为零,去LP2,否则插补结束

   LJMP 0000H

LP4:ACALL YMP    调Y电动机正转子程序

   MOV A,4AH     计算新偏差F值,F=F+Xe

   ADD A,4EH

   MOV 4AH,A

   MOV A,49H

   ADDC A,4DH

   MOV 49H,A

   SJMP LP3

XMPMOV A48H            X电动机当前状态字

   CLR C             移位法

   RRC A

   RRC A

   RRC A

XMP2:CPL A

   ANL A,#49H 屏蔽无关位

   MOV 48H,A  保存X电动机状态字,作为下次转动的基准

   ORL A,47H  保存Y电动机原状态不变

XMP4:MOV DPTR,#0030H

   MOVX @DPTR,A

   RET

XMM:MOV A,48H

   CLR

   RLC A

   RLC A

   RLC A

   SJMP XMP2

YMP:MOV A,47H

   CLR C

   RRC A

   RRC A

   RRC A

YMP2:CPL A

   ANL A,#92H

   MOV 47H,A

   ORL A,48H

   SJMP XMP4

YMM:MOV A,47H

   CLR C

   RLC A

   RLC A

   RLC A

   SJMP YMP2

说明:1)黑体字模块为软件环形分配器;

 2)各变量地址分配如下:4FH50H-终判值,4DH4EH-Xe,4BH4CH-Ye,49H4AH-偏差值F,47H-Y电动机状态字,48H-X电动机状态字;以大地址格式(最低字节地址单元存放最高位数据)存放各种数据;

3)口地址0030HXY三相步进电动机相线关系如下: