英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 4015|回复: 2
打印 上一主题 下一主题

16进制转10进制函数。

[复制链接]
跳转到指定楼层
1#
发表于 2009-4-26 10:21:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
A/D采样后的值是16进制(<0xFFFF),通过什么函数能转为10进制(或什么方法),以便于送到数码管显示。
2#
 楼主| 发表于 2009-4-26 10:22:13 | 只看该作者
;16位二进制数换算位DCD码==========

;============================================
;16位二进制数换算位DCD码==========
;********************************************************************
;                  Binary To BCD Conversion Routine      
;      This routine converts a 16 Bit binary Number to a 5 Digit        
; BCD Number. This routine is useful since PIC16C55 & PIC16C57         
; have  two 8 bit ports and one 4 bit port ( total of 5 BCD digits)     
;                                                                       
;       The 16 bit binary number is input in locations ACCBHI and      
; ACCBLO with the high byte in ACCBHI.                                 
;       The 5 digit BCD number is returned in R0, R1 and R2 with R0     
; containing the MSD in its right most nibble.                          
;                                                                       
;   Performance :                                                      
;               Program Memory  :       35                              
;               Clock Cycles    :       885                             
;
;********************************************************************
;               Test Program
;*********************************************************************
;main    movlw   0FF
; movwf   ACCBHI
; movwf   ACCBLO          ; The 16 bit binary number = FFFF
; call    B2_BCD          ; After conversion the Decimal Number
;                               ; in R0,R1,R2 = 06,55,35   
;*******************************************************************;
B2_BCD  bcf     STATUS,0                ; clear the carry bit
movlw   .16
movwf   count
clrf    R0
clrf    R1
clrf    R2
loop16  rlf     ACCBLO,1
rlf     ACCBHI,1
rlf     R2,1
rlf     R1,1
rlf     R0,1
;
decfsz  count,1
goto    adjDEC
RETLW   0
;
adjDEC  movlw   R2
movwf   FSR
call    adjBCD
;
movlw   R1
movwf   FSR
call    adjBCD
;
movlw   R0
movwf   FSR
call    adjBCD
;
goto    loop16
;
adjBCD  movlw   3
addwf   0,W
movwf   TEMP
btfsc   TEMP,3          ; test if result > 7
movwf   0
movlw   30
addwf   0,W
movwf   TEMP
btfsc   TEMP,7          ; test if result > 7
movwf   0               ; save as MSD
RETLW   0
;
回复 支持 反对

使用道具 举报

3#
 楼主| 发表于 2009-4-26 10:22:29 | 只看该作者
X为要显示的16进制数

万位=X/10000

千位=(X%10000)/1000

百位=(X%1000)/100

十位=(X%100)/10

个位=X%10
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-11-24 03:24 , Processed in 0.052528 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表