您现在的位置: |
逐点比较法直线插补汇编语言程序(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 XMP:MOV A,48H 取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)口地址0030H与XY三相步进电动机相线关系如下:
|