《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 解決方案 > MCS51單片機數制轉換程序

MCS51單片機數制轉換程序

2009-01-16
關鍵詞: 單片機 源代碼

MCS51單片機數制轉換程序

;BCD小數轉換為二進制小數(2位)
;入口    :R0(低位首址),R7
;占用資源:ACC,B,R5
;堆棧需求:2字節
;出口    :R3,R4

PDTB     :CLR    A
          MOV    R3,A
          MOV    R4,A
PDB1     :MOV    A,R3
          MOV    B,#9AH
          MUL    AB
          MOV    R5,B
          XCH    A,R4
          MOV    B,#19H
          MUL    AB
          ADD    A,R4
          MOV    A,R5
          ADDC   A,B
          MOV    R5,A
          MOV    A,@R0
          MOV    B,#9AH
          MUL    AB
          ADD    A,R5
          MOV    R4,A
          CLR    A
          ADDC   A,B
          XCH    A,R3
          MOV    B,#19H
          MUL    AB
          ADD    A,R4
          MOV    R4,A
          MOV    A,B
          ADDC   A,R3
          MOV    R3,A
          MOV    A,@R0
          MOV    B,#19H
          MUL    AB
          ADD    A,R3
          MOV    R3,A
          DEC    R0
          DJNZ   R7,PDB1
          RET

;BCD小數轉換為二進制小數(N位)
;入口    :R1(低位首址),M,N
;占用資源:ACC,B,R2,R3,R7
;堆棧需求:2字節
;出口    :R0

PDTBMN   :MOV    A,R0
          MOV    R2,A
          MOV    A,R1
          MOV    R3,A
          MOV    B,N
          CLR    A
PDBMN1   :MOV    @R0,A
          INC    R0
          DJNZ   B,PDBMN1
          MOV    A,N
          SWAP   A
          RR     A
          MOV    R7,A
PDBMN2   :MOV    A,R2
          MOV    R0,A
          MOV    A,R3
          MOV    R1,A
          MOV    B,M
          CLR    C
PDBMN3   :MOV    A,@R1
          ADDC   A,@R1
          DA     A
          JNB    ACC.4,PDBMN4
          SETB   C
          CLR    ACC.4
PDBMN4   :MOV    @R1,A
          INC    R1
          DJNZ   B,PDBMN3
          MOV    B,N
PDBMN5   :MOV    A,@R0
          RLC    A
          MOV    @R0,A
          INC    R0
          DJNZ   B,PDBMN5
          DJNZ   R7,PDBMN2
          MOV    A,R2
          MOV    R0,A
          RET

;BCD整數轉換為二進制整數(1位)
;入口    :R0(高位地址),R7
;占用資源:ACC,B
;堆棧需求:2字節
;出口    :R4

IDTB1    :CLR    A
          MOV    R4,A
IDB11    :MOV    A,R4
          MOV    B,#0AH
          MUL    AB
          ADD    A,@R0
          INC    R0
          MOV    R4,A
          DJNZ   R7,IDB11
          RET

;BCD整數轉換為二進制整數(2位)
;入口    :R0(高位地址),R7
;占用資源:ACC,B
;堆棧需求:2字節
;出口    :R3,R4

IDTB2    :CLR    A
          MOV    R3,A
          MOV    R4,A
IDB21    :MOV    A,R4
          MOV    B,#0AH
          MUL    AB
          MOV    R4,A
          MOV    A,B
          XCH    A,R3
          MOV    B,#0AH
          MUL    AB
          ADD    A,R3
          MOV    R3,A
          MOV    A,R4
          ADD    A,@R0
          INC    R0
          MOV    R4,A
          CLR    A
          ADDC   A,R3
          MOV    R3,A
          DJNZ   R7,IDB21
          RET

;BCD整數轉換為二進制整數(3位)
;入口    :R0(高位地址),R7
;占用資源:ACC,B
;堆棧需求:2字節
;出口    :R2,R3,R4

IDTB3    :CLR    A
          MOV    R2,A
          MOV    R3,A
          MOV    R4,A
IDB31    :MOV    A,R4
          MOV    B,#0AH
          MUL    AB
          MOV    R4,A
          MOV    A,B
          XCH    A,R3
          MOV    B,#0AH
          MUL    AB
          ADD    A,R3
          MOV    R3,A
          CLR    A
          ADDC   A,B
          XCH    A,R2
          MOV    B,#0AH
          MUL    AB
          ADD    A,R2
          MOV    R2,A
          MOV    A,R4
          ADD    A,@R0
          INC    R0
          MOV    R4,A
          CLR    A
          ADDC   A,R3
          MOV    R3,A
          CLR    A
          ADDC   A,R2
          MOV    R2,A
          DJNZ   R7,IDB31
          RET

;BCD整數轉換為二進制整數(N位)
;入口    :R1(高位地址),M,N
;占用資源:ACC,B,R2,R7,NCNT,F0
;堆棧需求:2字節
;出口    :R0

IDTBMN   :MOV    A,R0
          MOV    R2,A
          MOV    B,N
          CLR    A
IDBMN1   :MOV    @R0,A
          INC    R0
          DJNZ   B,IDBMN1
          MOV    A,R2
          MOV    R0,A
          MOV    A,M
          MOV    NCNT,A
IDBMN2   :MOV    R7,N
          CLR    A
          CLR    F0
IDBMN3   :XCH    A,@R0
          MOV    B,#0AH
          MUL    AB
          MOV    C,F0
          ADDC   A,@R0
          MOV    F0,C
          MOV    @R0,A
          INC    R0
          MOV    A,B
          DJNZ   R7,IDBMN3
          MOV    A,R2
          MOV    R0,A
          MOV    A,@R1
          INC    R1
          ADD    A,@R0
          MOV    @R0,A
          DJNZ   NCNT,IDBMN2
          RET

;二進制小數(2位)轉換為十進制小數(分離BCD碼)
;入口    :R3,R4,R7
;占用資源:ACC,B
;堆棧需求:3字節
;出口    :R0

PBTD     :MOV    A,R7
          PUSH   A
PBD1     :MOV    A,R4
          MOV    B,#0AH
          MUL    AB
          MOV    R4,A
          MOV    A,B
          XCH    A,R3
          MOV    B,#0AH
          MUL    AB
          ADD    A,R3
          MOV    R3,A
          CLR    A
          ADDC   A,B
          MOV    @R0,A
          INC    R0
          DJNZ   R7,PBD1
          POP    A
          MOV    R7,A
          MOV    A,R0
          CLR    C
          SUBB   A,R7
          MOV    R0,A
          RET

;二進制小數(M位)轉換為十進制小數(分離BCD碼)
;入口    :R1,M,N
;占用資源:ACC,B,R2,R3,R7,NCNT
;堆棧需求:2字節
;出口    :R0

PBTDMN   :MOV    A,R0
          MOV    R2,A
          MOV    A,R1
          MOV    R3,A
          MOV    A,N
          MOV    NCNT,A
PBDMN1   :MOV    R7,M
          CLR    A
          CLR    F0
PBDMN2   :XCH    A,@R1
          MOV    B,#0AH
          MUL    AB
          MOV    C,F0
          ADDC   A,@R1
          MOV    F0,C
          MOV    @R1,A
          INC    R1
          MOV    A,B
          DJNZ   R7,PBDMN2
          ADDC   A,#00H
          MOV    @R0,A
          INC    R0
          MOV    A,R3
          MOV    R1,A
          DJNZ   NCNT,PBDMN1
          MOV    A,R2
          MOV    R0,A
          RET

;二進制整數(2位)轉換為十進制整數(分離BCD碼)
;入口    :R3,R4
;占用資源:ACC,R2,NDIV31
;堆棧需求:5字節
;出口    :R0,NCNT

IBTD21   :MOV    NCNT,#00H
          MOV    R2,#00H
IBD211   :MOV    R7,#0AH
          LCALL  NDIV31
          MOV    A,R7
          MOV    @R0,A
          INC    R0
          INC    NCNT
          MOV    A,R3
          ORL    A,R4
          JNZ    IBD211
          MOV    A,R0
          CLR    C
          SUBB   A,NCNT
          MOV    R0,A
          RET

;二進制整數(2位)轉換為十進制整數(組合BCD碼)
;入口    :R3,R4
;占用資源:ACC,B,R7
;堆棧需求:3字節
;出口    :R0

IBTD22   :MOV    A,R0
          PUSH   A
          MOV    R7,#03H
          CLR    A
IBD221   :MOV    @R0,A
          INC    R0
          DJNZ   R7,IBD221
          POP    A
          MOV    R0,A
          MOV    R7,#10H
IBD222   :PUSH   A
          CLR    C
          MOV    A,R4
          RLC    A
          MOV    R4,A
          MOV    A,R3
          RLC    A
          MOV    R3,A
          MOV    B,#03H
IBD223   :MOV    A,@R0
          ADDC   A,@R0
          DA     A
          MOV    @R0,A
          INC    R0
          DJNZ   B,IBD223
          POP    A
          MOV    R0,A
          DJNZ   R7,IBD222
          RET

;二進制整數(3位)轉換為十進制整數(分離BCD碼)
;入口    :R2,R3,R4
;占用資源:ACC,R2,NDIV31
;堆棧需求:5字節
;出口    :R0,NCNT

IBTD31   :CLR    A
          MOV    NCNT,A
IBD311   :MOV    R7,#0AH
          LCALL  NDIV31
          MOV    A,R7
          MOV    @R0,A
          INC    R0
          INC    NCNT
          MOV    A,R2
          ORL    A,R3
          ORL    A,R4
          JNZ    IBD311
          MOV    A,R0
          CLR    C
          SUBB   A,NCNT
          MOV    R0,A
          RET

;二進制整數(3位)轉換為十進制整數(組合BCD碼)
;入口    :R2,R3,R4
;占用資源:ACC,B,R7
;堆棧需求:3字節
;出口    :R0

IBTD32   :MOV    A,R0
          PUSH   A
          MOV    R7,#04H
          CLR    A
IBD321   :MOV    @R0,A
          INC    R0
          DJNZ   R7,IBD321
          POP    A
          MOV    R0,A
          MOV    R7,#18H
IBD322   :PUSH   A
          CLR    C
          MOV    A,R4
          RLC    A
          MOV    R4,A
          MOV    A,R3
          RLC    A
          MOV    R3,A
          MOV    A,R2
          RLC    A
          MOV    R2,A
          MOV    B,#04H
IBD323   :MOV    A,@R0
          ADDC   A,@R0
          DA     A
          MOV    @R0,A
          INC    R0
          DJNZ   B,IBD323
          POP    A
          MOV    R0,A
          DJNZ   R7,IBD322
          RET

;二進制整數(M位)轉換為十進制整數(組合BCD碼)
;入口    :R1,M,N
;占用資源:ACC,B,R2,R3,R7
;堆棧需求:2字節
;出口    :R0

IBTDMN   :MOV    A,R0
          MOV    R2,A
          MOV    A,R1
          MOV    R3,A
          MOV    B,N
          CLR    A
IBDMN1   :MOV    @R0,A
          INC    R0
          DJNZ   B,IBDMN1
          MOV    A,M
          SWAP   A
          RR     A
          CLR    C
          MOV    R7,A
IBDMN2   :MOV    A,R2
          MOV    R0,A
          MOV    A,R3
          MOV    R1,A
          MOV    B,M
IBDMN3   :MOV    A,@R1
          RLC    A
          MOV    @R1,A
          INC    R1
          DJNZ   B,IBDMN3
          MOV    B,N
IBDMN4   :MOV    A,@R0
          ADDC   A,@R0
          DA     A
          JNB    ACC.4,IBDMN5
          SETB   C
          CLR    ACC.4
IBDMN5   :MOV    @R0,A
          INC    R0
          DJNZ   B,IBDMN4
          DJNZ   R7,IBDMN2
          MOV    A,R2
          MOV    R0,A
          RET

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 一区二区三区在线播放视频| 国产欧美一区二区三区在线看 | 国自产精品手机在线观看视频 | 香蕉人人超人人超碰超国产| 国产精品亚洲片在线| 久久精品国产99精品最新| 欧美成人午夜精品免费福利| 啊灬啊别停灬用力视频啊视频| 香蕉久久成人网| 国产特级毛片aaaaaa高清| 一个人看的视频www在线| 日日操夜夜操视频| 久久精品这里热有精品2015| 欧美一级专区免费大片俄罗斯| 可以看的黄色软件| 药店打针1_标清| 国产偷自拍视频| 麻豆国产原创剧情精品| 国产日韩欧美自拍| 中文字幕日韩wm二在线看| 国产精品国产欧美综合一区| 91av手机在线| 国产资源在线看| 91精品国产91久久久久久最新 | 国产精品美女久久久久av超清| aaaaa毛片| 天堂网www天堂在线资源| youjizz护士| 婷婷五月综合色中文字幕| 一级黄色大片网站| 最新版天堂中文在线| 亚洲乱码一二三四区乱码| 欧美大陆日韩一区二区三区| 亚洲成人app| 欧美成人看片黄a免费看| 亚洲成人自拍网| 欧美日韩亚洲综合| 亚洲国产精品毛片AV不卡在线| 欧美换爱交换乱理伦片免费观看| 亚洲日韩乱码中文字幕| 欧美日本免费一区二区三区|