7 segment a PIC

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
walleyman
Příspěvky: 35
Registrován: 27 kvě 2008, 02:00
Bydliště: Jičín

7 segment a PIC

#1 Příspěvek 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

Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 02:00

#2 Příspěvek od Andrea »

A co bys chtěl na tom ošetřovat? Napiš konkrétně, co chceš udělat.

Uživatelský avatar
walleyman
Příspěvky: 35
Registrován: 27 kvě 2008, 02:00
Bydliště: Jičín

#3 Příspěvek 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 )

Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 02:00

#4 Příspěvek 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).

Uživatelský avatar
walleyman
Příspěvky: 35
Registrován: 27 kvě 2008, 02:00
Bydliště: Jičín

#5 Příspěvek 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.

Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 02:00

#6 Příspěvek 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.

Uživatelský avatar
walleyman
Příspěvky: 35
Registrován: 27 kvě 2008, 02:00
Bydliště: Jičín

#7 Příspěvek od walleyman »

Sem blbec, uz vim, díky moc, neco podobnyho jsem kdysi resil na 8051, ted mi to doslo. Diky

Uživatelský avatar
Standa33
Příspěvky: 283
Registrován: 07 lis 2009, 01:00

#8 Příspěvek 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

Uživatelský avatar
walleyman
Příspěvky: 35
Registrován: 27 kvě 2008, 02:00
Bydliště: Jičín

#9 Příspěvek od walleyman »

už mám chvíli vyřešíno :wink: 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

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“