您当前的位置:五五电子网电子知识单片机-工控设备51单片机MCS-51单片机实用子程序库资料7 正文
MCS-51单片机实用子程序库资料7

MCS-51单片机实用子程序库资料7

点击数:7612 次   录入时间:03-04 11:39:06   整理:http://www.55dianzi.com   51单片机
SIN2: JB ACC.0,SIN3
CPL 1FH ;对于第一、三象限,直接求规一化的小数
SJMP SIN4
SIN3: MOV A,R4 ;对于第二、四象限,准备求其补数
INC A
MOV R4,A
JNZ SIN4
INC R3
SIN4: LCALL RLN ;规格化
SETB F0
LCALL AS1 ;求自变量归一化等效值
LCALL MOV0 ;回传
LCALL FPLN ;用多项式计算正弦值
DB 7DH,93H,28H;0.07185
DB 41H,0,0 ;0
DB 80H,0A4H,64H;-0.64215
DB 41H,0,0 ;0
DB 1,0C9H,2;1.5704
DB 41H,0,0 ;0
DB 40H ;结束
MOV A,@R0 ;结果的绝对值超过1.00吗?
JZ SIN5
JB ACC.6,SIN5
INC R0 ;绝对值按1.00封顶
MOV @R0,#80H
INC R0
MOV @R0,#0
DEC R0
DEC R0
MOV A,#1
SIN5: MOV C,1DH ;将数符拼入结果中
MOV ACC.7,C
MOV @R0,A
RET
 
(30) 标号: FATN 功能:浮点反正切函数

入口条件:操作数在[R0]中。
出口信息:结果仍在[R0]中。
影响资源:DPTR、PSW、A、B、R2~R7、位1CH~1FH 堆栈需求:7字节
FATN: MOV A,@R0
MOV C,ACC.7
MOV 1DH,C ;保存自变量数符
CLR ACC.7 ;自变量取绝对值
MOV @R0,A
CLR 1CH ;清求余运算标志
JB ACC.6,ATN1;自变量为纯小数否?
JZ ATN1
SETB 1CH ;置位求余运算标志
LCALL FRCP ;通过倒数运算,转换成纯小数
ATN1: LCALL FPLN ;通过多项式运算,计算反正切函数值
DB 0FCH,0E4H,91H;-0.055802
DB 7FH,8FH,37H;0.27922
DB 0FFH,0EDH,0E0H;-0.46460
DB 7BH,0E8H,77H;0.028377
DB 0,0FFH,68H;0.9977
DB 72H,85H,0ECH;3.1930×10-5
DB 40H ;结束
JNB 1CH,ATN2;需要求余运算否?
CPL 1FH ;准备运算标志
MOV C,1FH
MOV F0,C ;常数1.5708(π/2)
MOV R5,#1
MOV R6,#0C9H
MOV R7,#10H
LCALL AS1 ;求余运算
LCALL MOV0 ;回传
ATN2: MOV A,@R0 ;拼入结果的数符
MOV C,1DH
MOV ACC.7,C
MOV @R0,A
RET
 
(31) 标号: RTOD 功能:浮点弧度数转换成浮点度数

入口条件:浮点弧度数在[R0]中。
出口信息:转换成的浮点度数仍在[R0]中。
影响资源:PSW、A、B、R2~R7、位1EH、1FH 堆栈需求:6字节
RTOD: MOV R5,#6 ;系数(180/π)传送到第二工作区
MOV R6,#0E5H
MOV R7,#2FH
SJMP DR ;通过乘法进行转换

(32) 标号: DTOR 功能:浮点度数转换成浮点弧度数

入口条件:浮点度数在[R0]中。
出口信息:转换成的浮点弧度数仍在[R0]中。
影响资源:PSW、A、B、R2~R7、位1EH、1FH 堆栈需求:6字节
DTOR: MOV R5,#0FBH;系数(π/180)传送到第二工作区
MOV R6,#8EH
MOV R7,#0FAH
DR: LCALL MVR0 ;将[R0]传送到第一工作区
CLR 1EH ;系数为正
LCALL MUL1 ;通过乘法进行转换
LJMP MOV0 ;结果传送到[R0]中
END



上一页  [1] [2] 


本文关键字:资料  单片机  子程序  51单片机单片机-工控设备 - 51单片机