您现在的位置: |
逐点比较法圆弧插补汇编语言程序(MCS-8031) |
根据该插补软件框图(参见http://www.busnc.com/ly/zhudian/yuanhchabu.htm),编制出逐点比较法第一象限逆圆插补汇编语言源程序(本程序指令系统采用MCS8031,仅供参考): RP:MOV SP,#60H MOV 4AH,#00H F单元清零 MOV 49H,#00H MOV 48H,#01H X电动机初始化 MOV 47H,#02H Y电动机初始化 MOV DPTR,#0030H MOV A,#03H XY电动机上电 MOVX @DPTR,A CLR C 计算终判值 MOV A,52H 低位X、Xe相减,得a SUBB A,4EH MOV 54H,A 保存结果于终判值单元低位字节 MOV A,51H 高位X、Xe相减,得b SUBB A,4DH MOV 53H,A 保存结果于终判值单元高位字节 CLR C 低位Ye、Y相减,得c MOV A,4CH SUBB A,50H MOV 20H,C 暂存Ye、Y低位相减产生的借位位 ADD A,54H 计算d=a+c,d为低位终判值 MOV 54H,A 保存d于终判值单元低位字节 MOV 21H,C 暂存d=a+c产生的进位位 MOV A,4BH MOV C,20H 恢复Ye、Y低位相减产生的借位位 SUBB A,4FH 高位Ye、Y相减,得e MOV C,21H 恢复d=a+c产生的进位位 ADDC A,53H 计算f=b+e,f为高位终判值 MOV 53H,A 保存f于终判值单元高位字节 RP2:ACALL DL0 延时子程序 MOV A,49H 取F高位字节 JB ACC.7,RP6 高位=1,F<0,去RP6 ACALL XMM 高位=0,F>0,X反转一步 CLR C 计算新偏差F=F-2X+1 MOV A,4AH 计算g=F-X低位 SUBB A,52H XCH A,B g存入B寄存器 MOV A,49H 计算h=F-X高位 SUBB A,51H XCH A,B 低位存A,高位存B。BA内容为F-X CLR C 计算i=g-X=F-2X低位 SUBB A,52H XCH A,B B内容为F-2X低位,A内容为F-X高位 SUBB A,51H A内容为F-2X高位 XCH A,B BA内容为F-2X ADD A,#01H 计算F-2X+1 MOV 4AH,A 4A内容为F-2X+1低位 XCH A,B B内容为F-2X+1低位,A内容为F-2X高位 ADDC A,#00H 考虑F-2X+1的进位 MOV 49H,A 49H的内容为F-2X+1高位 CLR C 计算X=X-1 MOV A,52H 低位 SUBB A,#01H MOV 52H,A MOV A,51H 高位 SUBB A,#00H MOV 51H,A RP4:CLR C 终判值减1 MOV A,54H SUBB A,#01H MOV 54H,A MOV A,53H SUBB A,#00H MOV 53H,A ORL A,54H JNZ RP2 插补没结束,转至RP2 LJMP 0000H RP6:ACALL YMP Y电动机正转 MOV R6,#02H 此处“2”,为“F+2Y+1”的“2” RP7:MOV A,4AH F+2Y+1 ADD A,50H MOV 4AH,A MOV A,49H ADDC A,4FH MOV 49H,A DJNZ R6,RP7 MOV A,4AH ADD A,#01H MOV 4AH,A MOV A,49H ADDC A,#00H MOV A,50H ADD A,#01H MOV 50H,A MOV A,4FH ADDC A,#00H MOV 4FH,A AJMP RP4 说明:1)数据存放格式同前; 2)各变量地址分配如下:47H-4EH,存放数据方式同直线,4FH50H-Y,51H52H-X,53H54H-终判值 |