日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
MCS-51單片機(jī)實(shí)用子程序庫(kù)(六)
MCS-51單片機(jī)實(shí)用子程序庫(kù)(六)
 更新時(shí)間:2009-7-9 16:49:29  點(diǎn)擊數(shù):0
【字體: 字體顏色

MCS-51單片機(jī)實(shí)用子程序庫(kù)

(25) 標(biāo)號(hào): FTOD 功能:格式化浮點(diǎn)數(shù)轉(zhuǎn)換成雙字節(jié)定點(diǎn)數(shù)

入口條件:格式化浮點(diǎn)操作數(shù)在[R0]中。
出口信息:OV=1時(shí)溢出,OV=0時(shí)轉(zhuǎn)換成功:定點(diǎn)數(shù)的絕對(duì)值在[R0]中(雙字節(jié)),數(shù)符
在位1FH中,F(xiàn)0=1 時(shí)為整數(shù),CY=1時(shí)為一字節(jié)整數(shù)一字節(jié)小數(shù),否則為純小數(shù)。
影響資源:PSW、A、B、R2、R3、R4、位1FH 堆棧需求: 6字節(jié)
FTOD: LCALL MVR0 ;將[R0]傳送到第一工作區(qū)
MOV A,R2
JZ FTD4 ;階碼為零,純小數(shù)
JB ACC.7,FTD4;階碼為負(fù),純小數(shù)
SETB C
SUBB A,#10H
JC FTD1
SETB OV ;階碼大于16,溢出
RET
FTD1: SETB C
MOV A,R2
SUBB A,#8 ;階碼大于8否?
JC FTD3
FTD2: MOV B,#10H ;階碼大于8,按雙字節(jié)整數(shù)轉(zhuǎn)換
LCALL FTD8
SETB F0 ;設(shè)立雙字節(jié)整數(shù)標(biāo)志
CLR C
CLR OV
RET
FTD3: MOV B,#8 ;按一字節(jié)整數(shù)一字節(jié)小數(shù)轉(zhuǎn)換
LCALL FTD8
SETB C ;設(shè)立一字節(jié)整數(shù)一字節(jié)小數(shù)標(biāo)志
CLR F0
CLR OV
RET
FTD4: MOV B,#0 ;按純小數(shù)轉(zhuǎn)換
LCALL FTD8
CLR OV ;設(shè)立純小數(shù)標(biāo)志
CLR F0
CLR C
RET
FTD8: MOV A,R2 ;按規(guī)定的整數(shù)位數(shù)進(jìn)行右規(guī)
CJNE A,B,FTD9
MOV A,R3 ;將雙字節(jié)結(jié)果傳送到[R0]中
MOV @R0,A
INC R0
MOV A,R4
MOV @R0,A
DEC R0
RET
FTD9: CLR C
LCALL RR1 ;右規(guī)一次
SJMP FTD8

(26) 標(biāo)號(hào): BTOF 功能:浮點(diǎn)BCD碼轉(zhuǎn)換成格式化浮點(diǎn)數(shù)

入口條件:浮點(diǎn)BCD碼操作數(shù)在[R0]中。
出口信息:轉(zhuǎn)換成的格式化浮點(diǎn)數(shù)仍在[R0]中。
影響資源:PSW、A、B、R2~R7、位1DH~1FH 堆棧需求:6字節(jié)
BTOF: INC R0 ;判斷是否為零。
INC R0
MOV A,@R0
MOV R7,A
DEC R0
MOV A,@R0
MOV R6,A
DEC R0
ORL A,R7
JNZ BTF0
MOV @R0,#41H;為零,轉(zhuǎn)換結(jié)束。
RET
BTF0: MOV A,@R0
MOV C,ACC.7
MOV 1DH,C ;保存數(shù)符。
CLR 1FH ;以絕對(duì)值進(jìn)行轉(zhuǎn)換。
MOV C,ACC.6 ;擴(kuò)充階碼為八位。
MOV ACC.7,C
MOV @R0,A
JNC BTF1
ADD A,#19 ;是否小于1E-19?
JC BTF2
MOV @R0,#41H;小于1E-19時(shí)以0計(jì)。
INC R0
MOV @R0,#0
INC R0
MOV @R0,#0
DEC R0
DEC R0
RET
BTF1: SUBB A,#19
JC BTF2
MOV A,#3FH ;大于1E19時(shí)封頂。
MOV C,1DH
MOV ACC.7,C
MOV @R0,A
INC R0
MOV @R0,#0FFH
INC R0
MOV @R0,#0FFH
DEC R0
DEC R0
RET
BTF2: CLR A ;準(zhǔn)備將BCD碼尾數(shù)轉(zhuǎn)換成十六進(jìn)制浮點(diǎn)數(shù)。
MOV R4,A
MOV R3,A
MOV R2,#10H ;至少兩個(gè)字節(jié)。
BTF3: MOV A,R7
ADD A,R7
DA A
MOV R7,A
MOV A,R6
ADDC A,R6
DA A
MOV R6,A
MOV A,R4
RLC A
MOV R4,A
MOV A,R3
RLC A
MOV R3,A
DEC R2
JNB ACC.7,BTF3;直到尾數(shù)規(guī)格化。
MOV A,R6 ;四舍五入。
ADD A,#0B0H
CLR A
ADDC A,R4
MOV R4,A
CLR A
ADDC A,R3
MOV R3,A
JNC BTF4
MOV R3,#80H
INC R2
BTF4: MOV DPTR,#BTFL;準(zhǔn)備查表得到十進(jìn)制階碼對(duì)應(yīng)的浮點(diǎn)數(shù)。
MOV A,@R0
ADD A,#19 ;計(jì)算表格偏移量。
MOV B,#3
MUL AB
ADD A,DPL
MOV DPL,A
JNC BTF5
INC DPH
BTF5: CLR A ;查表。
MOVC A,@A+DPTR
MOV C,ACC.6
MOV ACC.7,C
MOV R5,A
MOV A,#1
MOVC A,@A+DPTR
MOV R6,A
MOV A,#2
MOVC A,@A+DPTR
MOV R7,A
LCALL MUL1 ;將階碼對(duì)應(yīng)的浮點(diǎn)數(shù)和尾數(shù)對(duì)應(yīng)的浮點(diǎn)數(shù)相乘。
MOV C,1DH ;取出數(shù)符。
MOV 1FH,C
LJMP MOV0 ;傳送轉(zhuǎn)換結(jié)果。

(27) 標(biāo)號(hào): FTOB 功能:格式化浮點(diǎn)數(shù)轉(zhuǎn)換成浮點(diǎn)BCD碼

入口條件:格式化浮點(diǎn)操作數(shù)在[R0]中。
出口信息:轉(zhuǎn)換成的浮點(diǎn)BCD碼仍在[R0]中。
影響資源:PSW、A、B、R2~R7、位1DH~1FH 堆棧需求:6字節(jié)
FTOB: INC R0
MOV A,@R0
INC R0
ORL A,@R0
DEC R0
DEC R0
JNZ FTB0
MOV @R0,#41H
RET
FTB0: MOV A,@R0
MOV C,ACC.7
MOV 1DH,C
CLR ACC.7
MOV @R0,A
LCALL MVR0
MOV DPTR,#BFL0;絕對(duì)值大于或等于1時(shí)的查表起點(diǎn)。
MOV B,#0 ;十的0次冪。
MOV A,R2
JNB ACC.7,FTB1
MOV DPTR,#BTFL;絕對(duì)值小于1E-6時(shí)的查表起點(diǎn)。
MOV B,#0EDH ;十的-19次冪。
ADD A,#16
JNC FTB1
MOV DPTR,#BFLN;絕對(duì)值大于或等于1E-6時(shí)的查表起點(diǎn)。
MOV B,#0FAH ;十的-6次冪。
FTB1: CLR A ;查表,找到一個(gè)比待轉(zhuǎn)換浮點(diǎn)數(shù)大的整數(shù)冪。
MOVC A,@A+DPTR
MOV C,ACC.6
MOV ACC.7,C
MOV R5,A
MOV A,#1
MOVC A,@A+DPTR
MOV R6,A
MOV A,#2
MOVC A,@A+DPTR
MOV R7,A
MOV A,R5 ;和待轉(zhuǎn)換浮點(diǎn)數(shù)比較。
CLR C
SUBB A,R2
JB ACC.7,FTB2;差為負(fù)數(shù)。
JNZ FTB3
MOV A,R6
CLR C
SUBB A,R3
JC FTB2
JNZ FTB3
MOV A,R7
CLR C
SUBB A,R4
JC FTB2
JNZ FTB3
MOV R5,B ;正好是表格中的數(shù)。
INC R5 ;冪加一。
MOV R6,#10H ;尾數(shù)為0·1000。
MOV R7,#0
SJMP FTB6 ;傳送轉(zhuǎn)換結(jié)果。
FTB2: INC DPTR ;準(zhǔn)備表格下一項(xiàng)。
INC DPTR
INC DPTR
INC B ;冪加一。
SJMP FTB1 ;
FTB3: PUSH B ;保存冪值。
LCALL DIV3 ;相除,得到一個(gè)二進(jìn)制浮點(diǎn)數(shù)的純小數(shù)。
FTB4: MOV A,R2 ;取階碼。
JZ FTB5 ;為零嗎?
CLR C
LCALL RR1 ;右規(guī)。
SJMP FTB4
FTB5: POP ACC ;取出冪值。
MOV R5,A ;作為十進(jìn)制浮點(diǎn)數(shù)的階碼。
LCALL HB2 ;轉(zhuǎn)換尾數(shù)的十分位和百分位。
MOV R6,A
LCALL HB2 ;轉(zhuǎn)換尾數(shù)的千分位和萬(wàn)分位。
MOV R7,A
MOV A,R3 ;四舍五入。
RLC A
CLR A
ADDC A,R7
DA A
MOV R7,A
CLR A
ADDC A,R6
DA A
MOV R6,A
JNC FTB6
MOV R6,#10H
INC R5
FTB6: INC R0 ;存放轉(zhuǎn)換結(jié)果。
INC R0
MOV A,R7
MOV @R0,A
DEC R0
MOV A,R6
MOV @R0,A
DEC R0
MOV A,R5
MOV C,1DH ;取出數(shù)符。
MOV ACC.7,C
MOV @R0,A
RET
HB2: MOV A,R4 ;尾數(shù)擴(kuò)大100倍。
MOV B,#100
MUL AB
MOV R4,A
MOV A,B
XCH A,R3
MOV B,#100
MUL AB
ADD A,R3
MOV R3,A
JNC HB21
INC B
HB21: MOV A,B ;將整數(shù)部分轉(zhuǎn)換成BCD碼。
MOV B,#10
DIV AB
SWAP A
ORL A,B
RET
BTFL: DB 41H,0ECH,1EH ;1.0000E-19
DB 45H,93H,93H ;1.0000E-18
DB 48H,0B8H,78H ;1.0000E-17
DB 4BH,0E6H,96H ;1.0000E-16
DB 4FH,90H,1DH ;1.0000E-15
DB 52H,0B4H,25H ;1.0000E-14
DB 55H,0E1H,2EH ;1.0000E-13
DB 59H,8CH,0BDH ;1.0000E-12
DB 5CH,0AFH,0ECH ;1.0000E-11
DB 5FH,0DBH,0E7H ;1.0000E-10
DB 63H,89H,70H ;1.0000E-9
DB 66H,0ABH,0CCH ;1.0000E-8
DB 69H,0D6H,0C0H ;1.0000E-7
BFLN: DB 6DH,86H,38H ;1.0000E-6
DB 70H,0A7H,0C6H ;1.0000E-5
DB 73H,0D1H,0B7H ;1.0000E-4
DB 77H,83H,12H ;1.0000E-3
DB 7AH,0A3H,0D7H ;1.0000E-2
DB 7DH,0CCH,0CDH ;1.0000E-1
BFL0: DB 1,80H,00H ;1.0000
DB 4,0A0H,00H ;1.0000E1
DB 7,0C8H,00H ;1.0000E2
DB 0AH,0FAH,00H ;1.0000E3
DB 0EH,9CH,40H ;1.0000E4
DB 11H,0C3H,50H ;1.0000E5
DB 14H,0F4H,24H ;1.0000E6
DB 18H,98H,97H ;1.0000E7
DB 1BH,0BEH,0BCH ;1.0000E8
DB 1EH,0EEH,6BH ;1.0000E9
DB 22H,95H,03H ;1.0000E10
DB 25H,0BAH,44H ;1.0000E11
DB 28H,0E8H,0D5H ;1.0000E12
DB 2CH,91H,85H ;1.0000E13
DB 2FH,0B5H,0E6H ;1.0000E14
DB 32H,0E3H,60H ;1.0000E15
DB 36H,8EH,1CH ;1.0000E16
DB 39H,31H,0A3H ;1.0000E17
DB 3CH,0DEH,0BH ;1.0000E18
DB 40H,8AH,0C7H ;1.0000E19

。ǎ玻福 標(biāo)號(hào): FCOS 功能:浮點(diǎn)余弦函數(shù)

入口條件:操作數(shù)在[R0]中。
出口信息:結(jié)果仍在[R0]中。
影響資源:DPTR、PSW、A、B、R2~R7、位1DH~1FH 堆棧需求: 6字節(jié)
FCOS: LCALL FABS ;COS(-X) = COS X
MOV R5,#1 ;常數(shù)1.5708(π/2)
MOV R6,#0C9H
MOV R7,#10H
CLR 1EH
LCALL MVR0
CLR F0
LCALL AS1 ;x+(π/2)
LCALL MOV0 ;保存結(jié)果,接著運(yùn)行下面的FSIN程序

(29) 標(biāo)號(hào): FSIN 功能:浮點(diǎn)正弦函數(shù)

入口條件:操作數(shù)在[R0]中。
出口信息:結(jié)果仍在[R0]中。
影響資源:DPTR、PSW、A、B、R2~R7、位1DH~1FH 堆棧需求: 6字節(jié)
FSIN: MOV A,@R0
MOV C,ACC.7
MOV 1DH,C ;保存自變量的符號(hào)
CLR ACC.7 ;統(tǒng)一按正數(shù)計(jì)算
MOV @R0,A
LCALL MVR0 ;將[R0]傳送到第一工作區(qū)
MOV R5,#0 ;系數(shù)0.636627(2/π)
MOV R6,#0A2H
MOV R7,#0FAH
CLR 1EH
LCALL MUL1 ;相乘,自變量按(π/2)規(guī)一化
MOV A,R2 ;將結(jié)果復(fù)制到第二區(qū)
MOV R5,A
MOV A,R3
MOV R6,A
MOV A,R4
MOV R7,A
LCALL INT ;第一區(qū)取整,獲得象限信息
MOV A,R2
JZ SIN2
SIN1: CLR C ;將浮點(diǎn)象限數(shù)轉(zhuǎn)換成定點(diǎn)象限數(shù)
LCALL RR1
CJNE R2,#10H,SIN1
MOV A,R4
JNB ACC.1,SIN2
CPL 1DH ;對(duì)于第三、四象限,結(jié)果取反
SIN2: JB ACC.0,SIN3
CPL 1FH ;對(duì)于第一、三象限,直接求規(guī)一化的小數(shù)
SJMP SIN4
SIN3: MOV A,R4 ;對(duì)于第二、四象限,準(zhǔn)備求其補(bǔ)數(shù)
INC A
MOV R4,A
JNZ SIN4
INC R3
SIN4: LCALL RLN ;規(guī)格化
SETB F0
LCALL AS1 ;求自變量歸一化等效值
LCALL MOV0 ;回傳
LCALL FPLN ;用多項(xiàng)式計(jì)算正弦值
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 ;結(jié)束
MOV A,@R0 ;結(jié)果的絕對(duì)值超過(guò)1.00嗎?
JZ SIN5
JB ACC.6,SIN5
INC R0 ;絕對(duì)值按1.00封頂
MOV @R0,#80H
INC R0
MOV @R0,#0
DEC R0
DEC R0
MOV A,#1
SIN5: MOV C,1DH ;將數(shù)符拼入結(jié)果中
MOV ACC.7,C
MOV @R0,A
RET
 
(30) 標(biāo)號(hào): FATN 功能:浮點(diǎn)反正切函數(shù)

入口條件:操作數(shù)在[R0]中。
出口信息:結(jié)果仍在[R0]中。
影響資源:DPTR、PSW、A、B、R2~R7、位1CH~1FH 堆棧需求:7字節(jié)
FATN: MOV A,@R0
MOV C,ACC.7
MOV 1DH,C ;保存自變量數(shù)符
CLR ACC.7 ;自變量取絕對(duì)值
MOV @R0,A
CLR 1CH ;清求余運(yùn)算標(biāo)志
JB ACC.6,ATN1;自變量為純小數(shù)否?
JZ ATN1
SETB 1CH ;置位求余運(yùn)算標(biāo)志
LCALL FRCP ;通過(guò)倒數(shù)運(yùn)算,轉(zhuǎn)換成純小數(shù)
ATN1: LCALL FPLN ;通過(guò)多項(xiàng)式運(yùn)算,計(jì)算反正切函數(shù)值
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 ;結(jié)束
JNB 1CH,ATN2;需要求余運(yùn)算否?
CPL 1FH ;準(zhǔn)備運(yùn)算標(biāo)志
MOV C,1FH
MOV F0,C ;常數(shù)1.5708(π/2)
MOV R5,#1
MOV R6,#0C9H
MOV R7,#10H
LCALL AS1 ;求余運(yùn)算
LCALL MOV0 ;回傳
ATN2: MOV A,@R0 ;拼入結(jié)果的數(shù)符
MOV C,1DH
MOV ACC.7,C
MOV @R0,A
RET
 
(31) 標(biāo)號(hào): RTOD 功能:浮點(diǎn)弧度數(shù)轉(zhuǎn)換成浮點(diǎn)度數(shù)

入口條件:浮點(diǎn)弧度數(shù)在[R0]中。
出口信息:轉(zhuǎn)換成的浮點(diǎn)度數(shù)仍在[R0]中。
影響資源:PSW、A、B、R2~R7、位1EH、1FH 堆棧需求:6字節(jié)
RTOD: MOV R5,#6 ;系數(shù)(180/π)傳送到第二工作區(qū)
MOV R6,#0E5H
MOV R7,#2FH
SJMP DR ;通過(guò)乘法進(jìn)行轉(zhuǎn)換

(32) 標(biāo)號(hào): DTOR 功能:浮點(diǎn)度數(shù)轉(zhuǎn)換成浮點(diǎn)弧度數(shù)

入口條件:浮點(diǎn)度數(shù)在[R0]中。
出口信息:轉(zhuǎn)換成的浮點(diǎn)弧度數(shù)仍在[R0]中。
影響資源:PSW、A、B、R2~R7、位1EH、1FH 堆棧需求:6字節(jié)
DTOR: MOV R5,#0FBH;系數(shù)(π/180)傳送到第二工作區(qū)
MOV R6,#8EH
MOV R7,#0FAH
DR: LCALL MVR0 ;將[R0]傳送到第一工作區(qū)
CLR 1EH ;系數(shù)為正
LCALL MUL1 ;通過(guò)乘法進(jìn)行轉(zhuǎn)換
LJMP MOV0 ;結(jié)果傳送到[R0]中
END

  • 上一篇: MCS-51單片機(jī)實(shí)用子程序庫(kù)(七)
  • 下一篇: MCS-51單片機(jī)實(shí)用子程序庫(kù)(五)
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1