|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
PIC 運(yùn)算子程序(2) |
| 作者:BLACKHILL 欄目:單片機(jī) |
4.2 3字節(jié)浮點(diǎn)數(shù)轉(zhuǎn)換為定點(diǎn)整數(shù) 子程序的轉(zhuǎn)換結(jié)果將采用補(bǔ)碼表示。其轉(zhuǎn)換數(shù)值范圍:-32768~32767,入口條件和出口條件如下: 入口條件:ACCBHI、ACCBLO、EXPB 出口條件:ACCBHI、ACCBLO 以下為子程序的清單。由于程序所需調(diào)用的子程序和所需通用寄存器單元地址和定點(diǎn)數(shù)轉(zhuǎn)換為浮點(diǎn)數(shù)子程序相同,在此省略。使用時(shí),將前面介紹的子程序拷入此處即可。 FtoD CLRF SIGN ;清結(jié)果符號(hào)寄存器 MOVF ACCBHI,0 BTFSS ACCBHI,7 ;被轉(zhuǎn)換數(shù)是否為負(fù)? GOTO D1 BSF SIGN,7 ;是,SIGN.7置1 CALL NEG_B ;被轉(zhuǎn)換數(shù)取補(bǔ) D1 BTFSS EXPB,7 ;被轉(zhuǎn)換數(shù)為正,再判階碼為負(fù)否? GOTO D2 CLRF ACCBHI ;為負(fù),被轉(zhuǎn)換數(shù)小于1,無法用定點(diǎn)數(shù)表示 CLRF ACCBLO RETLW 0 D2 MOVLW .16 ;被轉(zhuǎn)換數(shù)階碼減16(十進(jìn)制數(shù)) SUBWF EXPB,0 BTFSS STATUS,C ;階碼小于16? GOTO D3 MOVLW 0XFF ;階碼大于等于16,置ACCB為最大,返回 MOVWF ACCBHI MOVWF ACCBLO RETLW 01 D3 CALL FTOW3 ;調(diào)用子程序?qū)⒏↑c(diǎn)數(shù)轉(zhuǎn)換為定點(diǎn)數(shù) BTFSC SIGN,7 ;定點(diǎn)數(shù)為負(fù)? CALL NEG_B ;是,取補(bǔ) RETLW 0 ;否,返回 ;**************************************** FTOW3 MOVLW .15 ;EXPB=15(十進(jìn)制數(shù))? SUBWF EXPB,0 BTFSC STATUS,Z RETLW 0 ;是,返回 BCF STATUS,C ;否,ACCB繼續(xù)右移,EXPB加1 RRF ACCBHI RRF ACCBLO INCF EXPB GOTO FTOW3 ;重新判斷EXPB=15? 【校驗(yàn)舉例1】 19531(十進(jìn)制) 化為十六進(jìn)制數(shù):4C4B0FH 結(jié)果:4C4BH 【校驗(yàn)舉例2】 2622(十進(jìn)制) 化為十六進(jìn)制數(shù):51F00CH 結(jié)果:0A3EH 【例程】 MAIN MOVLW 0X4B ;被轉(zhuǎn)換數(shù)4C4BH送ACCB MOVWF ACCBLO MOVLW 0X4C MOVWF ACCBHI MOVLW 0X0F MOVWF EXPB CALL FtoD ;調(diào)用定點(diǎn)數(shù)至浮點(diǎn)數(shù)轉(zhuǎn)換子程序 END 5 碼制轉(zhuǎn)換程序設(shè)計(jì) 5.1 雙字節(jié)定點(diǎn)數(shù)至5位BCD碼轉(zhuǎn)換程序 入口條件:ACCBHI、ACCBLO 出口條件:ACCCHI低半字節(jié)、ACCCLO、ACCDHI 以下為雙字節(jié)定點(diǎn)數(shù)至5位BCD碼轉(zhuǎn)換程序清單。 LIST p=16F877 INCLUDE p16F877.inc ACCBLO EQU 23 ;存放被轉(zhuǎn)換的雙字節(jié)整數(shù)低8位 ACCBHI EQU 24 ;存放被轉(zhuǎn)換的雙字節(jié)整數(shù)高8位 ACCCLO EQU 26 ;存放5位BCD碼 ACCCHI EQU 27 ACCDLO EQU 28 ACCDHI EQU 29 TEMP EQU 2A ;臨時(shí)寄存器 SIGN EQU 2B ;被轉(zhuǎn)換數(shù)符號(hào)寄存器 ORG 0X0000 START GOTO MAIN ORG 0X0100 ;**********雙字節(jié)數(shù)至BCD碼子程序************ BtoBCD CLRF SIG |
| 2樓: | >>參與討論 |
| 作者: biily 于 2003/1/16 0:46:00 發(fā)布:
thank you . 我正想學(xué)點(diǎn)pic的。 |
|
| 3樓: | >>參與討論 |
| 作者: owengeorge 于 2003/1/22 14:45:00 發(fā)布:
thank you very much! |
|
| 4樓: | >>參與討論 |
| 作者: max560 于 2003/1/23 8:59:00 發(fā)布:
驗(yàn)證過嗎? |
|
| 5樓: | >>參與討論 |
| 作者: BLACKHILL 于 2003/1/24 7:55:00 發(fā)布:
都是運(yùn)行過的 |
|
| 6樓: | >>參與討論 |
| 作者: wyhfly 于 2003/1/24 14:28:00 發(fā)布:
有參考價(jià)值!! |
|
| 7樓: | >>參與討論 |
| 作者: goof 于 2003/2/8 9:39:00 發(fā)布:
太謝謝你了 |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |