音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

PIC16F877 運算子程序(定點)

作者:晴兒 欄目:單片機
PIC16F877 運算子程序(定點)
21ic,bbs使前面在這里相識,快要過節(jié)了,把我以前收集的一些子程序拿出來大家一塊用!希望大家共同進步!



16×16位定點數(shù)加、減法子程序


;***雙字節(jié)減法子程序,入口地址ACCB-ACCA,出口地址ACCB***
D_sub    CALL    NEG_A    ;求ACCA的補碼
;***雙字節(jié)加法子程序,入口地址ACCB+ACCA,出口地址ACCB***
D_add      MOVF     ACCALO,0    ;ACCB和ACCA低半字節(jié)相加
    ADDWF     ACCBLO
    BTFSC     STATUS,C    ;有進位否?
    INCF     ACCBHI    ;有,ACCB高字節(jié)加1,再加ACCAHI
    MOVF     ACCAHI,0    ;ACCA、ACCB高半字節(jié)相加
    ADDWF     ACCBHI
    RETURN    ;子程序返回
;************** ACCA取補子程序*****************
NEG_A    COMF     ACCALO    ;ACCALO取反加1
    INCF     ACCALO
    BTFSC     STATUS,Z    ;低8位有進位嗎?
    DECF     ACCAHI    ;有,ACCAHI減1,再取反
    COMF     ACCAHI    ;否則ACCAHI直接取反
    RETURN    ;子程序返回

16×16位定點數(shù)乘法子程序


;***16×16位乘法子程序,入口地址ACCB×ACCA,出口地址ACCB和ACCC ***
    ORG    0X0100
D_mpy    CALL     S_SIGN    ;求取乘積的符號,并對負數(shù)取補
     CALL     SETUP    ;調(diào)用子程序,將ACCB的值送ACCD
    INCF    TEMP
    CLRF     ACCCHI    ;清ACCC
    CLRF     ACCCLO
MLOOP    BCF     STATUS,C    ;清進位位
    RRF     ACCDHI    ;ACCD右移
    RRF     ACCDLO
    BTFSC     STATUS,C    ;判斷是否需要相加
    CALL     D_add    ;加乘數(shù)至ACCB,見加法程序
    BCF     STATUS,C    ;清進位位
    RRF     ACCBHI    ;右移部分乘積
    RRF     ACCBLO
    RRF     ACCCHI
    RRF     ACCCLO
    DECFSZ     TEMP    ;乘法完成否?
    GOTO     MLOOP    ;否,繼續(xù)求乘積
    BTFSS     SIGN,7    ;是,確定乘積的符號
    GOTO     OVER    ;為正,乘法結(jié)束
    COMF     ACCCLO    ;為負,乘積取補
    INCF         ACCCLO
    BTFSC        STATUS,Z
    DECF         ACCCHI
    COMF         ACCCHI
    BTFSC         STATUS,Z
NEG_B    DECF         ACCBLO        ;
    COMF         ACCBLO
    BTFSC         STATUS,Z
    DECF         ACCBHI
    COMF         ACCBHI
OVER    RETURN        ;子程序返回
;****************************************
SETUP    MOVLW     .15    ;初始化TEMP寄存器        
    MOVWF     TEMP
    MOVF     ACCBHI,0    ;ACCB送ACCD
    MOVWF    ACCDHI
    MOVF     ACCBLO,0
    MOVWF     ACCDLO
    CLRF     ACCBHI    ;清ACCB
    CLRF     ACCBLO
    RETURN        ;子程序返回
;*******乘法運算確定結(jié)果符號判斷子程序******
S_SIGN    MOVF     ACCAHI,0    ;ACCAHI異或ACCBHI,結(jié)果送SIGN單元
    XORWF     ACCBHI,0
    MOVWF     SIGN            
    BTFSS     ACCBHI,7    ;ACCB為負嗎?
    GOTO     CHEK_A    ;否,檢查ACCA
    CALL    NEG_B    ;是,求取ACCB絕對值
CHEK_A    BTFSC     ACCAHI,7    ;ACCA為負嗎?
    CALL     NEG_A    ;ACCA為負,求取ACCA絕對值,
            ;見雙字節(jié)加法程序
    RETURN        ;ACCA和ACCB均為正,返回

16×16位定點數(shù)除法子程序

;***16×16位數(shù)除法子程序,入口地址ACCB /ACCA,出口地址ACCB ***
    
D_div    CALL     S_SIGN    ;確定商的符號,并將負數(shù)取補
    CALL    SETUP    ;初始化TEMP,將被除數(shù)移至ACCD,
            ;(SETUP子程序請參見16×16位定點數(shù)
            ;乘法子程序SETUP)
    INCF    TEMP
    CLRF    ACCCHI    ;清余數(shù)寄存器
    CLRF    ACCCLO
DLOOP    BCF    STATUS,C    ;清進位位
    RLF    ACCDLO    ;被除數(shù)、余數(shù)左移1位
    RLF    AC
2樓: >>參與討論
xuebing
好,頂!
 
3樓: >>參與討論
HotPower
不知為何大家都喜歡抄書???不解。。。
 
4樓: >>參與討論
nfldr
to HotPower,因為很多人不看書
晴兒也是幫這些人看書了

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
各位,請問PIC的TMR1作為計數(shù)器時怎么用?
pic的c編譯器有哪些?
請問哪里有小鍵盤?
如何讓12F629在SLEEP時,timer1還能計時
誠懇請教初學如何選ICD2(主機及配件)?使用軟仿真學習效果如何?
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號