48-bit binární číslo na BCD – Assembler – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

48-bit binární číslo na BCD – Assembler – Fórum – Programujte.com48-bit binární číslo na BCD – Assembler – Fórum – Programujte.com

 

remmidemmi0
Věrný člen
20. 8. 2012   #1
-
0
-

potřebuju sepsat program, pro PIC16F877A, ideálně v assembleru, který převede 48-bitové binární číslo na BCD číslo. Nejlépe asi metodou posuvu a testu na 4. Binární 48 bitové číslo se do PIC MCU načte postupně v 6x 8bitech přes port.   Za funkční program bude odměna, tak se neupejpejte  .

Nahlásit jako SPAM
IP: 82.142.115.–
Standa
~ Anonymní uživatel
122 příspěvků
22. 8. 2012   #2
-
0
-

#1 remmidemmi

include"P16F877A.inc"
;***************************************************************
COUNT equ 20h
CISLA10 equ 21h
CISLA32 equ 22h
CISLA54 equ 23h
CISLA76 equ 24h
CISLA98 equ 25h
CISLABA equ 26h
CISLADC equ 27h
CISLAFE equ 28h

LOOP3 equ 2Ah

HEX_1 equ 30h
HEX_2 equ 31h
HEX_3 equ 32h
HEX_4 equ 33h
HEX_5 equ 34h
HEX_6 equ 35h
;***************************************************************
org 0000h
goto Start
;**************************************************************
; Podprogram prevede 48 bitove cislo z HEX na DEC
; HEX_6,HEX_5,HEX_4, HEX_3, HEX_2, HEX_1 -> CISLAFE,CISLADC,CISLABA,CISLA98, CISLA76, CISLA 54, CISLA32, CISLA10
; Priklad: FFFFFFFFFFh -> 281474976710655d

Start
movlw 0FFh
movwf HEX_1
movwf HEX_2
movwf HEX_3
movwf HEX_4
movwf HEX_5
movwf HEX_6

HEX6BCD
bcf STATUS,C ; vynuluj bit C pred rotaci
movlw d'48'
movwf COUNT
;       ------------------------
clrf CISLA10
clrf CISLA32
clrf CISLA54
clrf CISLA76
clrf CISLA98
clrf CISLABA
clrf CISLADC
clrf CISLAFE
;-------------------------------
LOOP48
rlf HEX_1,F 
rlf HEX_2,F
rlf HEX_3,F
rlf HEX_4,F 
rlf HEX_5,F
rlf HEX_6,F

rlf CISLA10,F
rlf CISLA32,F
rlf CISLA54,F
rlf CISLA76,F
rlf CISLA98,F
rlf CISLABA,F
rlf CISLADC,F
rlf CISLAFE,F

decfsz COUNT,F
goto DEKKOR  ; dekadicka korekce se provede s kazdym registrem

return
;-------------------------------
DEKKOR
movlw CISLA10
movwf FSR
call BCDKOR  ; BCD korekce

movlw CISLA32
movwf FSR
call BCDKOR  ; BCD korekce

movlw CISLA54
movwf FSR
call BCDKOR  ; BCD korekce

movlw CISLA76
movwf FSR
call BCDKOR  ; BCD korekce

movlw CISLA98
movwf FSR
call BCDKOR  ; BCD korekce

movlw CISLABA
movwf FSR
call BCDKOR  ; BCD korekce

movlw CISLADC
movwf FSR
call BCDKOR  ; BCD korekce

movlw CISLAFE
movwf FSR
call BCDKOR  ; BCD korekce

goto LOOP48
;-------------------------------
BCDKOR
movlw 03h
addwf INDF,W
movwf LOOP3
btfsc LOOP3,3  ; test zda je vysledek > 7
movwf INDF
;       ------------------------
movlw 30h
addwf INDF,W
movwf LOOP3
btfsc LOOP3,7  ; test zda je vysledek > 7
movwf INDF
;       ------------------------
return

Opak
goto Opak
;***************************************************************
end

Zkuste tohle,doba převodu při 20MHz je cca 1,5ms. Program jsem jen upravil pro 48bit, původní je ze stránky http://doveda.byl.cz/…/prevody.htm#…

Nahlásit jako SPAM
IP: 88.100.62.–
remmidemmi0
Věrný člen
1. 9. 2012   #3
-
0
-

Dik, vyzkousim. Zajimavy web toho dovedy 

Nahlásit jako SPAM
IP: 82.142.115.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 10 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý