Stránka 1 z 1
7 segment a PIC
Napsal: 01 dub 2010, 15:17
od walleyman
Zdravím, potřeboval bych připojit dvoumístný sedmi segment přes dva BCD dekodery na PIC 16F627A, mám volný celý PORTB a zapisuji na něj 8 bitovou hodnotu z pracovního registru. Jak mohu softwarově ošetřit rozdělení 8 bit na dva BCD ? Programuji v assembleru. Děkuji
Napsal: 01 dub 2010, 15:20
od Andrea
A co bys chtěl na tom ošetřovat? Napiš konkrétně, co chceš udělat.
Napsal: 01 dub 2010, 15:27
od walleyman
chci na těch sedimsegmentech zobrazovat čísla 0-63, které se dostane na výstupní port v 8 bitové formě, a nevim jak upravit osmibitové číslo na dvě BCD např. 00010010b (1 8 )D rozdělit na 0001b (1) a 1000b ( 8 )
Napsal: 01 dub 2010, 15:31
od Andrea
Jo ták. No to musíš to číslo v registru vydělit desíti a pak dát dohromady podíl (posunutej o 4bity nahoru) a zbytek (4 bity dole).
Napsal: 01 dub 2010, 15:36
od walleyman
Aha, ale to v assembleru půjde dosti blbě, v C++ ještě nejsem moc zdatnej abych to udělal ve vyšším jazyce.
Napsal: 01 dub 2010, 15:38
od Andrea
walleyman píše:Aha, ale to v assembleru půjde dosti blbě, v C++ ještě nejsem moc zdatnej abych to udělal ve vyšším jazyce.
Proč by to šlo blbě? Si udělej funkci na dělení 10ti, v nejstupidnějším případě odečítej 10, dokud je dělenec větší než deset a za každé odečtení připočítávej do výsledku 1ku. Nebo, pokud jsi líný, si tu funkci stáhni z netu.
Napsal: 01 dub 2010, 15:41
od walleyman
Sem blbec, uz vim, díky moc, neco podobnyho jsem kdysi resil na 8051, ted mi to doslo. Diky
Napsal: 01 dub 2010, 19:00
od Standa33
opak
movlw .10
subwf X,W
btfss STATUS,C
goto RAD1
movwf X
incf DESITKY,F
goto opak
RAD1
movf X,W
movwf JEDNOTKY
Napsal: 01 dub 2010, 23:53
od walleyman
už mám chvíli vyřešíno

ale stejně díkes
BINBCD ;korekce 8bitu na dva BCD
CLRF MSD
MOVWF LSD
DESET MOVLW .10
SUBWF LSD,0
BTFSS STATUS,C
GOTO OVER
MOVWF LSD
INCF MSD,1
GOTO DESET
OVER
SWAPF MSD,1
MOVF LSD,0
IORWF MSD,0
MOVWF PORTB
RETLW 0