新闻中心

EEPW首页>嵌入式系统>设计应用> 51单片机的PD控温程序

51单片机的PD控温程序

作者: 时间:2012-10-12 来源:网络 收藏

;(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


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭