音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 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 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

貼一個宋榮、尹勇的 BCD 碼加法程序。分析錯誤

作者:shiaf 欄目:單片機
貼一個宋榮、尹勇的 BCD 碼加法程序。分析錯誤
O_flow  equ     9
; 其它的寄存器自己定義    
;
BCDAdd
movf    Num_1,W
     clrf    Num_1           ;clear num_1
     addwf   Num_2,1         ; do binary addition
     btfsc   STATUS,C        ;< 256 then skip
     goto    inc_n1n2        ;else inc all
     movlw   66              ;add 66
     addwf   Num_2,1         ;/
     btfss   STATUS,DC       ;half carry?
     goto    sub_06          ;no then subtract
     btfss   STATUS,C        ;full carry?
     goto    sub_60          ;yes then subtract
inc_n1  
incf    Num_1,1         ;inc it
      retlw   0               ;clr w
sub_06
  btfss   STATUS,C        ;full carry
      goto    sub_66          ;yes subtract 66
      movlw   6               ;else subtract 6
      goto    sub_com         ;do common
sub_66
      movlw   66              
sub_com
subwf   Num_2,1                   
      retlw   0
sub_60
      movlw   60
      goto    sub_com
inc_n1n2
      movlw   66
      addwf   Num_2,1
      goto    inc_n1
;
;********************************************************************
;               測試程序(注意它怎樣使用該子程序)
;*********************************************************************
main   
movlw   99
     movwf   Num_1      ; Set Num_1 = 99 ( max BCD digit )
     movlw   99
     movwf   Num_2      ; Set Num_2 = 99
;
     call    BCDAdd     ; After addition, Num_2 = 98
;                          ;  and Num_1 = 01 ( 99+99 = 198 -> max NUMBER )
;
self    goto    self     ;如不是測試程序,這句無用
;
;
    org     1FF
    goto    main
;
    END

不要迷信網(wǎng)上程序,大師也有錯誤喲!



http://www.teachersong.com/pass_word1/add_bcd.txt

2樓: >>參與討論
shiaf
錯誤還比較多,以下是我修改好的程序。
     REG_TEMP1   EQU    0x23
; 功能 FSR + WREG
; 入口 FSR 指相加數(shù) WREG = 被加數(shù)
; 出口 WREG = 和 C = 進位標(biāo)志
; 占用一個零時寄存器 REG_TEMP1
BCDAdd:
    MOVWF REG_TEMP1
    MOVF INDF,W
    ADDWF REG_TEMP1,F
    BTFSC STATUS,C
    GOTO INC_N1N2
    BTFSC STATUS,DC
    GOTO INC_N2
INC_N0:
    MOVLW 0x66
    ADDWF REG_TEMP1,F
    BTFSS STATUS,DC
    GOTO SUB_06
    BTFSS STATUS,C
    GOTO SUB_60
INC_N1:
    MOVF REG_TEMP1,W
    BSF STATUS,C    
    RETURN
INC_N1N2:
    BTFSS STATUS,DC
    GOTO INC_N1N2N3
    MOVLW 0x66        
    ADDWF REG_TEMP1,F
    GOTO INC_N1
INC_N1N2N3:
    MOVLW 0x66
    ADDWF REG_TEMP1,F
    BTFSC STATUS,DC
    GOTO INC_N1
    MOVLW 0x6
    SUBWF REG_TEMP1,F            
    GOTO INC_N1
INC_N2:
    MOVLW 0x6
    ADDWF REG_TEMP1,F
    GOTO INC_N0
SUB_06:
    BTFSS STATUS,C
    GOTO SUB_66
    MOVLW 0x6
    SUBWF REG_TEMP1,F
    GOTO INC_N1
SUB_60:
    MOVLW 0x60
    GOTO SUB_COM
SUB_66:
    MOVLW 0x66
SUB_COM:
    SUBWF REG_TEMP1,W
    BCF STATUS,C
    RETURN    
    END


* - 本貼最后修改時間:2003-12-30 10:55:39 修改者:shiaf

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
調(diào)查:大家都用的什么開發(fā)工具
編譯通過,可還有這些問題````
請教關(guān)于紅外接收的問題
PIC-MPLAB的疑惑!
一個16c712的A/D轉(zhuǎn)換子程序
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


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