|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 9:13 pm
|
Страница 1 от 1
|
[ 4 мнения ] |
|
BIN16BCD5 - някакви идеи ?!
| Автор |
Съобщение |
|
me40
Ранг: Новодошъл
Регистриран на: Пет Авг 25, 2006 11:31 pm Мнения: 168 Местоположение: Русе
|
 BIN16BCD5 - някакви идеи ?!
Здравейте !
Някакви други идеи за преобразуване на 16 бит. число в двойно-десетично.
Аз го правя по следният начин:
BIN16BCD5 macro BIN_DIG_H, BIN_DIG_L
local end_conv
local ch_10000
local ch_1000
local ch_100
local ch_10
local lp_1000
local lp_100
local lp_10
movff BIN_DIG_H,DIG_10
movff BIN_DIG_L,DIG_1
clrf DIG_100
clrf DIG_1000
clrf DIG_10000
ch_10000
SUBLF D'10000',DIG_10,DIG_1
bnc ch_1000
incf DIG_10000,f
bra ch_10000
ch_1000
ADDLF D'10000',DIG_10,DIG_1
lp_1000
SUBLF D'1000',DIG_10,DIG_1
bnc ch_100
incf DIG_1000,f
bra lp_1000
ch_100
ADDLF D'1000',DIG_10,DIG_1
lp_100
SUBLF D'100',DIG_10,DIG_1
bnc ch_10
incf DIG_100,f
bra lp_100
ch_10 ADDLF D'100',DIG_10,DIG_1
lp_10
movlw D'10'
subwf DIG_1,w
bnc end_conv
movwf DIG_1
incf DIG_10,f
bra lp_10
end_conv
endm
SUBLF macro Literal_16, Dest_H, Dest_L
movlw LOW (Literal_16)
subwf Dest_L,f
movlw HIGH (Literal_16)
subwfb Dest_H,f
endm
ADDLF macro Literal_16, Dest_H, Dest_L
movlw LOW (Literal_16)
addwf Dest_L,f
movlw HIGH (Literal_16)
addwfc Dest_H,f
endm
Но в действителност проц. ми увисва, а при преобразуването на 8-бит нямам никакви проблеми (по същият метод)
Ако някой може да приложи код (по друг начин) или да сподели идея.
|
| Пон Сеп 11, 2006 1:23 pm |
|
 |
|
Ки4о
Ранг: Форумен бог
Регистриран на: Съб Юли 22, 2006 9:50 pm Мнения: 1638
|
Аз ползвам следното :
Входни регистри:
binh_reg
binl_reg
Изходни регистри:
tenk_reg
thous_reg
hund_reg
tens_reg
ones_reg
Програма:
conv_16bin_bcd
banksel binh_reg
swapf binh_reg,w
andlw B'00001111'
addlw B'11110000'
movwf thous_reg
addwf thous_reg,f
addlw H'E2'
movwf hund_reg
addlw H'32'
movwf ones_reg
movf binh_reg,w
andlw B'00001111'
addwf hund_reg,f
addwf hund_reg,f
addwf ones_reg,f
addlw H'E9'
movwf tens_reg
addwf tens_reg,f
addwf tens_reg,f
swapf binl_reg,w
andlw B'00001111'
addwf tens_reg,f
addwf ones_reg,f
rlf tens_reg,f
rlf ones_reg,f
comf ones_reg,f
rlf ones_reg,f
movf binl_reg,w
andlw B'00001111'
addwf ones_reg,f
rlf thous_reg,f
movlw H'07'
movwf tenk_reg
movlw H'0A'
label1 addwf ones_reg,f
decf tens_reg,f
btfss STATUS,C
goto label1
label2 addwf tens_reg,f
decf hund_reg,f
btfss STATUS,C
goto label2
label3 addwf hund_reg,f
decf thous_reg,f
btfss STATUS,C
goto label3
label4 addwf thous_reg,f
decf tenk_reg,f
btfss STATUS,C
goto label4
retlw 0
Работи без проблеми.Айде успех 
|
| Пон Сеп 11, 2006 1:48 pm |
|
 |
|
Gogo
Ранг: Форумен бог
Регистриран на: Чет Фев 24, 2005 11:41 pm Мнения: 1049 Местоположение: Pz
|
Търси тук: http://www.piclist.com/techref/microchip/routines.htm - има всичко каквото ти трябва  По-точно:"Conversions"
Е това ми харесва: [url]http://www.piclist.org/techref/postbot.asp?by=time&id=piclist\1999\06\05\113527a[/url]
|
| Пон Сеп 11, 2006 2:11 pm |
|
 |
|
me40
Ранг: Новодошъл
Регистриран на: Пет Авг 25, 2006 11:31 pm Мнения: 168 Местоположение: Русе
|
Да, 24 - бит и на мен ми допада !
Довечера ще пробвам.
|
| Пон Сеп 11, 2006 3:04 pm |
|
|
|
Страница 1 от 1
|
[ 4 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 4 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|