📄 kongwen.txt
字号:
JMP AOOL3
FOOL2:
MOV ZSJCSL,#0 ;比例项小于微分项不加热
MOV ZSJCSH,#0
JMP AOOL3
AOOL2:
CLR C
MOV A,BLCSL
SUBB A,WFCSL ;KP>0,KD<0
MOV ZSJCSL,A ;将结果存入总时间常数中 kp*e(t)-kd*(e(t)-e(t-1))
MOV A,BLCSH
SUBB A,WFCSH
MOV ZSJCSH,A
JNC AOOL4 ;KP>KD
MOV ZSJCSL,#0 ;比例项小于微分项不加热
MOV ZSJCSH,#0
JMP AOOL3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;以下程序的4舍5入是为了增加精度,否则总时间常数可以直接除以10得POUTH值;;;;;;;;
AOOL3: MOV R6,ZSJCSH
MOV R7,ZSJCSL ;总数据常数里面存的是16进制数
MOV R3,#0
MOV R4,#0
MOV R5,#0
CALL HB2 ;换算成bcd码出口在r3,r4,r5中
MOV A,R5
ANL A,#0FH ;取小数位
CLR C
SUBB A,#5
JC PPPOOP1 ;小数位<5,转走
MOV A,R5
ANL A,#0F0H
SWAP A
INC A
PPPOOP2:
MOV R5,A ;小数位>5,个位数加1实现四舍五入
MOV A,R4
ANL A,#0FH
SWAP A
ADD A,R5
MOV R3,A
MOV A,R4
ANL A,#0F0H
SWAP A
MOV R2,A
CALL BH2
mov ZSJCSH,r3 ;MOV POUTH,R3 为了节省存储器此处用zsjcsh,zsjcsl
MOV A,#200 ;代替pouth,poutl
SUBB A,R3
mov ZSJCSl,a ;MOV POUTL,A
RET
PPPOOP1: MOV A,R5
ANL A,#0F0H
SWAP A
JMP PPPOOP2
;(21)标号: BH2 功能:双字节BCD码整数转换成双字节十六进制整数
;入口条件:待转换的双字节BCD码整数在R2、R3中。
;出口信息:转换后的双字节十六进制整数仍在R2、R3中。
;影响资源:PSW、A、B、R2、R3、R4 堆栈需求: 4字节
BH2: MOV A,R3; ;将低字节转换成十六进制
LCALL BCDH
MOV R3,A
MOV A,R2; ;将高字节转换成十六进制
LCALL BCDH
MOV B,#100; ;扩大一百倍
MUL AB
ADD A,R3; ;和低字节按十六进制相加
MOV R3,A
CLR A
ADDC A,B
MOV R2,A
RET
;(20)标号:BCDH 功能:单字节BCD码整数转换成单字节十六进制整数
;入口条件:待转换的单字节BCD码整数在累加器A中。
;出口信息:转换后的单字节十六进制整数仍在累加器A中。
;影响资源:PSW、A、B、R4 堆栈需求: 2字节
BCDH: MOV B,#10H ; ;分离十位和个位
DIV AB
MOV R4,B ; ;暂存个位
MOV B,#10 ; ;将十位转换成十六进制
MUL AB
ADD A,R4 ; ;按十六进制加上个位
RET
;(17) 标号: HB2 功能:双字节十六进制整数转换成双字节BCD码整数
;入口条件:待转换的双字节十六进制整数在R6、R7中。
;出口信息:转换后的三字节BCD码整数在R3、R4、R5中。
;影响资源:PSW、A、R2~R7 堆栈需求: 2字节
HB2: CLR A ; ;BCD码初始化
MOV R3,A
MOV R4,A
MOV R5,A
MOV R2,#10H ; ;转换双字节十六进制整数
HB3: MOV A,R7 ; ;从高端移出待转换数的一位到CY中
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R5 ; ;BCD码带进位自身相加,相当于乘2
ADDC A,R5
DA A ; ;十进制调整
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
MOV A,R3
ADDC A,R3
MOV R3,A ; ;双字节十六进制数的万位数不超过6,不用调整
DJNZ R2,HB3 ; ;处理完16bit
RET
;(5) 标号: MULD 功能:双字节二进制无符号数乘法
;
;入口条件:被乘数在R2、R3中,乘数在R6、R7中。
;出口信息:乘积在R2、R3、R4、R5中。
;影响资源:PSW、A、B、R2~R7 堆栈需求: 2字节
MULD: MOV A,R3 ; ;计算R3乘R7
MOV B,R7
MUL AB
MOV R4,B ; ;暂存部分积
MOV R5,A
MOV A,R3 ; ;计算R3乘R6
MOV B,R6
MUL AB
ADD A,R4 ; ;累加部分积
MOV R4,A
CLR A
ADDC A,B
MOV R3,A
MOV A,R2 ; ;计算R2乘R7
MOV B,R7
MUL AB
ADD A,R4 ; ;累加部分积
MOV R4,A
MOV A,R3
ADDC A,B
MOV R3,A
CLR A
RLC A
XCH A,R2 ; ;计算R2乘R6
MOV B,R6
MUL AB
ADD A,R3 ; ;累加部分积
MOV R3,A
MOV A,R2
ADDC A,B
MOV R2,A
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -