51单片机函数库Word下载.docx

上传人:b****2 文档编号:15117216 上传时间:2022-10-27 格式:DOCX 页数:67 大小:37.71KB
下载 相关 举报
51单片机函数库Word下载.docx_第1页
第1页 / 共67页
51单片机函数库Word下载.docx_第2页
第2页 / 共67页
51单片机函数库Word下载.docx_第3页
第3页 / 共67页
51单片机函数库Word下载.docx_第4页
第4页 / 共67页
51单片机函数库Word下载.docx_第5页
第5页 / 共67页
点击查看更多>>
下载资源
资源描述

51单片机函数库Word下载.docx

《51单片机函数库Word下载.docx》由会员分享,可在线阅读,更多相关《51单片机函数库Word下载.docx(67页珍藏版)》请在冰豆网上搜索。

51单片机函数库Word下载.docx

1.将子程序库全部内容链接在应用程序之后,统一编译即可。

优点是简单方便,缺

点是程序太长,大量无关子程序也包含在其中。

2.仅将子程序库中的有关部分内容链接在应用程序之后,统一编译即可。

有些子程

序需要调用一些低级子程序,这些低级子程序也应该包含在内。

优点是程序紧凑,缺点是

需要对子程序库进行仔细删节。

(一)MCS-51定点运算子程序库及其使用说明

定点运算子程序库文件名为DQ51.ASM,为便于使用,先将有关约定说明如下:

1.多字节定点操作数:

用[R0]或[R1]来表示存放在由R0或R1指示的连续单元中的数

据。

地址小的单元存放数据的高字节。

例如:

[R0]=123456H,若(R0)=30H,则(30H)=12H,

(31H)=34H,(32H)=56H。

2.运算精度:

单次定点运算精度为结果最低位的当量值。

3.工作区:

数据工作区固定在PSW、A、B、R2~R7,用户只要不在工作区中存放无

关的或非消耗性的信息,程序就具有较好的透明性。

(1)标号:

BCDA功能:

多字节BCD码加法

入口条件:

字节数在R7中,被加数在[R0]中,加数在[R1]中。

出口信息:

和在[R0]中,最高位进位在CY中。

影响资源:

PSW、A、R2堆栈需求:

2字节

BCDA:

MOVA,R7;

取字节数至R2中

MOVR2,A

ADDA,R0;

初始化数据指针

MOVR0,A

MOVA,R2

ADDA,R1

MOVR1,A

CLRC

BCD1:

DECR0;

调整数据指针

DECR1

MOVA,@R0

ADDCA,@R1;

按字节相加

DAA;

十进制调整

MOV@R0,A;

和存回[R0]中

DJNZR2,BCD1;

处理完所有字节

RET

(2)标号:

BCDB功能:

多字节BCD码减法

字节数在R7中,被减数在[R0]中,减数在[R1]中。

差在[R0]中,最高位借位在CY中。

PSW、A、R2、R3堆栈需求:

6字节

BCDB:

LCALLNEG1;

减数[R1]十进制取补

LCALLBCDA;

按多字节BCD码加法处理

CPLC;

将补码加法的进位标志转换成借位标志

MOVF0,C;

保护借位标志

恢复减数[R1]的原始值

MOVC,F0;

恢复借位标志

NEG1:

MOVA,R0;

[R1]十进制取补子程序入口

XCHA,R1;

交换指针

XCHA,R0

LCALLNEG;

通过[R0]实现[R1]取补

MOVA,R0

换回指针

(3)标号:

NEG功能:

多字节BCD码取补

字节数在R7中,操作数在[R0]中。

结果仍在[R0]中。

NEG:

MOVA,R7;

取(字节数减一)至R2中

DECA

保护指针

MOVR3,A

NEG0:

CLRC

MOVA,#99H

SUBBA,@R0;

按字节十进制取补

MOV@R0,A;

存回[R0]中

INCR0;

DJNZR2,NEG0;

处理完(R2)字节

MOVA,#9AH;

最低字节单独取补

SUBBA,@R0

MOV@R0,A

MOVA,R3;

恢复指针

(4)标号:

BRLN功能:

多字节BCD码左移十进制一位(乘十)

结果仍在[R0]中,移出的十进制最高位在R3中。

BRLN:

MOVR2,A

ADDA,R0;

MOVR3,#0;

工作单元初始化

BRL1:

DECR0;

MOVA,@R0;

取一字节

SWAPA;

交换十进制高低位

存回

取低字节移出的十进制高位

XCHDA,@R0;

换出本字节的十进制高位

MOVR3,A;

保存本字节的十进制高位

DJNZR2,BRL1;

(5)标号:

MULD功能:

双字节二进制无符号数乘法

被乘数在R2、R3中,乘数在R6、R7中。

乘积在R2、R3、R4、R5中。

PSW、A、B、R2~R7堆栈需求:

MULD:

计算R3乘R7

MOVB,R7

MULAB

MOVR4,B;

暂存部分积

MOVR5,A

计算R3乘R6

MOVB,R6

ADDA,R4;

累加部分积

MOVR4,A

CLRA

ADDCA,B

MOVA,R2;

计算R2乘R7

MOVA,R3

RLCA

XCHA,R2;

计算R2乘R6

ADDA,R3;

(6)标号:

MUL2功能:

双字节二进制无符号数平方

待平方数在R2、R3中。

结果在R2、R3、R4、R5中。

PSW、A、B、R2~R5堆栈需求:

MUL2:

计算R3平方

MOVB,A

计算R2平方

XCHA,R3;

暂存部分积,并换出R2和R3

XCHA,B

XCHA,R2

MULAB;

计算2×

R2×

R3

JNCMU20

INCR2;

累加溢出量

MU20:

XCHA,B;

ADDA,R4

ADDCA,R2

(7)标号:

DIVD功能:

双字节二进制无符号数除法

被除数在R2、R3、R4、R5中,除数在R6、R7中。

OV=0时,双字节商在R2、R3中,OV=1时溢出。

PSW、A、B、R1~R7堆栈需求:

DIVD:

CLRC;

比较被除数和除数

MOVA,R3

SUBBA,R7

SUBBA,R6

JCDVD1

SETBOV;

溢出

DVD1:

MOVB,#10H;

计算双字节商

DVD2:

部分商和余数同时左移一位

MOVA,R5

MOVA,R4

保存溢出位

SUBBA,R7;

计算(R2R3-R6R7)

ANLC,/F0;

结果判断

JCDVD3

MOVR2,A;

够减,存放新的余数

MOVA,R1

INCR5;

商的低位置一

DVD3:

DJNZB,DVD2;

计算完十六位商(R4R5)

MOVA,R4;

将商移到R2R3中

CLROV;

设立成功标志

(8)标号:

D457功能:

双字节二进制无符号数除以单字节二进制数

被除数在R4、R5中,除数在R7中。

OV=0时,单字节商在R3中,OV=1时溢出。

PSW、A、R3~R7堆栈需求:

D457:

JCDV50

商溢出

DV50:

MOVR6,#8;

求平均值(R4R5/R7-→R3)

DV51:

MOVF0,C

ANLC,/F0

JCDV52

DV52:

CPLC

DJNZR6,DV51

四舍五入

JCDV53

JCDV54

DV53:

INCR3

DV54:

CLROV

(9)标号:

DV31功能:

三字节二进制无符号数除以单字节二进制数

被除数在R3、R4、R5中,除数在R7中。

OV=0时,双字节商在R4、R5中,OV=1时溢出。

PSW、A、

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 机械仪表

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1