|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產業(yè) | CAN-bus/DeviceNe |
PIC16F877 運算子程序(浮點) |
| 作者:晴兒 欄目:單片機 |
3字節(jié)浮點四則運算子程序 ;**************浮點減法子程序**************** F_sub CALL NEG_A ;求ACCA的補碼,將減法轉換為補碼加法 ;***********浮點加法子程序************** F_add CALL SUBADJ ;調子程序判斷EXPB和EXPA的大小 BTFSC STATUS,Z ;參與運算的兩個數(shù)階碼相等? GOTO PADD ;是,求尾數(shù)的和 BTFSC STATUS,C ;EXPB>EXPA? CALL F_swap ;是,ACCB與ACCA互換 MOVF EXPA,0 ;否,求取兩者的差值 SUBWF EXPB SCLOOP CALL SHFTSR ;ACCB右移規(guī)格化 INCFSZ EXPB ;EXPB=EXPA? GOTO SCLOOP ;否,繼續(xù)右移 MOVF EXPA,0 ;是,存和(差)的階碼 MOVWF EXPB PADD MOVF ACCAHI,0 ;ACCAHI或ACCBHI IORWF ACCBHI,0 MOVWF SIGN ;存于SIGN寄存器 MOVF ACCBHI,0 ;暫存ACCBHI MOVWF EXPA CALL D_add ;尾數(shù)相加 BTFSS SIGN,7 ;ACCA和ACCB有負數(shù)? BTFSC ACCBHI,7 ;否,把和的最高位和次高位同時進位? GOTO ADD2 ;否,轉ADD2 BTFSS ACCAHI,7 ;ACCA為負嗎? GOTO ADD3 ;ACCA和ACCB不同時為負,轉ADD3 BTFSS EXPA,7 ;是,ACCB為負嗎? GOTO ADD3 BSF STATUS,C ;ACCA和ACCB同為負,帶負號右移 RRF ACCBHI RRF ACCBLO INCF EXPB ADD3 CLRF ACCCHI ;和(差)規(guī)格化 CLRF ACCCLO CALL F_norm RETURN ;子程序返回 ADD2 BCF STATUS,C ;最高位次高位不同時進位,ACCB右移 INCF EXPB GOTO SHFTR SHFTSR BCF STATUS,C ;ACCB帶符號右移子程序 BTFSC ACCBHI,7 BSF STATUS,C SHFTR RRF ACCBHI RRF ACCBLO RETURN ;子程序返回 ;********* ACCB、ACCA互換子程序************ F_swap MOVF ACCAHI,0 ;ACCAHI、ACCBHI互換 MOVWF TEMP MOVF ACCBHI,0 MOVWF ACCAHI MOVF TEMP,0 MOVWF ACCBHI MOVF ACCALO,0 ;ACCALO、ACCBLO互換 MOVWF TEMP MOVF ACCBLO,0 MOVWF ACCALO MOVF TEMP,0 MOVWF ACCBLO MOVF EXPA,0 ;EXPA、EXPB互換 MOVWF TEMP MOVF EXPB,0 MOVWF EXPA MOVF TEMP,0 |
| 2樓: | >>參與討論 |
| 作者: xuebing 于 2003/12/27 14:31:00 發(fā)布:
好!多謝! |
|
| 3樓: | >>參與討論 |
| 作者: fhshbian 于 2003/12/27 15:38:00 發(fā)布:
1 xiexie |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |