|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
加法子程序 |
| 作者:libin5337 欄目:單片機(jī) |
請問哪個大蝦那里有16F73實(shí)現(xiàn)16位加法的子程序.\ 謝謝! |
| 2樓: | >>參與討論 |
| 作者: xieyuanbin 于 2005/1/9 13:51:00 發(fā)布:
發(fā)貼前先查老貼或精華貼.大多數(shù)有答案. ;下例適合中低檔PIC的16位+-X÷運(yùn)算 LIST P=PIC16F873 INCLUDE "P16F873.INC" CBLOCK 0x20 ; ACCAL ; 加數(shù)/減數(shù) ACCAH ; ACCBL ;被加數(shù)/被減數(shù)/結(jié)果 ACCBH ; ACCCL ACCCH ACCDL ACCDH TEMP COUNT SIGN ENDC ; ;--------------------------------------------------- D_SUB ;減法,17周期,被減數(shù)在ACCB CALL NAG_A ;先求ACCA的負(fù)值,再相加. D_ADD ;加法 8周期 MOVF ACCAL,0 ADDWF ACCBL ;加低8位. BTFSC STATUS,C INCF ACCBH ;加進(jìn)位. MOVF ACCAH,0 ADDWF ACCBH ;加高8位. RETLW 0 ;------------- NAG_A ;求ACCA的負(fù)值 COMF ACCAL INCF ACCAL BTFSC STATUS,Z DECF ACCAH COMF ACCAH RETLW 0 ;----------- D_MPYS ;無符號數(shù)乘法.16位乘數(shù)存放在ACCA中,16位被乘數(shù)放在ACCB中,32位積放在ACCB,ACCC中.333周期 CALL SETUP MLOOP RRF ACCDH RRF ACCDL BTFSC STATUS,C CALL D_ADD RRF ACCBH RRF ACCBL RRF ACCCH RRF ACCCL DECFSZ COUNT GOTO MLOOP SETUP ;把ACCB的值送ACCD. MOVLW D'16' MOVWF COUNT MOVF ACCBH,0 MOVWF ACCDH MOVF ACCBL,0 MOVWF ACCDL CLRF ACCBH CLRF ACCBL RETLW 0 ;-------------------- D_DIVS ;雙精度除法,310周期,16位除數(shù)放在ACCA中,被除數(shù)放在ACCB中,16位商放在ACCB中,16位余數(shù)放在ACCC中 CALL SETUP CLRF ACCCH CLRF ACCCL DLOOP BCF STATUS,C RLF ACCDL RLF ACCDH RLF ACCCL RLF ACCCH MOVF ACCAH,0 SUBWF ACCCH,0 BTFSS STATUS,Z GOTO NOCHK MOVF ACCAL,0 SUBWF ACCCL,0 NOCHK BTFSS STATUS,C GOTO NOGO MOVF ACCAL,0 SUBWF ACCCL,0 BTFSS STATUS,C DECF ACCCH MOVF ACCAH,0 SUBWF ACCCH BSF STATUS,C NOGO RLF ACCBL RLF ACCBH DECFSZ COUNT GOTO DLOOP RETLW 0 |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |