Do portu P1 mam podlaczone diodki testujace (zapalane jedynka). Port P0 jest podciagniety rezystorami 10K. Problem polega na tym, ze jak zrobie np cos takeigo:
void main(void)
{
while (1)
{
P0_0=0;
P0_1=0;
P0_2=0;
P0_3=1;
P0_4=0;
P0_5=1;
P0_6=0;
P0_7=0;
P1_0=P0_0;
P1_1=P0_1;
P1_2=P0_2;
P1_3=P0_3;
P1_4=P0_4;
P1_5=P0_5;
P1_6=P0_6;
P1_7=P0_7;
}
}
(Tu akurat jest kopiowanie portow ale moze byc rowniez bezposrednie wpisywanie do portow P1), to diodki na porcie P1 swiaca slabym swiatlem (ledwo widac), a reset nie restuje (tylko jeden pin na porcie P1 zamruga). Dopiero jak dam P0.3,P0.4,P0,5 na "1" (to sa linie do ktorych mam podlaczony wys,odpowiednio RS,RW,E), to wszsytko gra. Podejrzewam ze przez to dziwne zachwoanie się portu, nie dziala mi wyswietlacz, jego linie danych D0-D7 mam podlaczone rowniez do P1. Moze ktos wie o co chodzi? Moze rezystory podciagajace sa nieodpowiednie? (dadam tylko ze kopiowanie z portow P3 czy P2 do P1, dziala bez zarzutu!).
Problem z portami na 89C51
napisałeś: Port P0 jest podciagniety rezystorami 10K [w domyśle na pewno chodzi o 10k podciągnięte pod zasilanie]
port P0 z tego co pamiętam ma wyjścia typo OC - i dlatego potrzebne te rezystory - tylko że w przypadku podłączenia LED-ów są one stanowczo za duże!! więc stąd ich ledwo widoczne świecenie. Do ich wysterowania (z portu P0) użyj jakiegoś drivera lub podłącz diody w miejsce tych 10k rezystorów (oczywiście w szeregu z rezystancją rzędu 300 Ohm), ale wtedy będziesz miał logikę zanegowana - wystawienie na porcie "1" spowoduje zgaśnięcie diody.
port P0 z tego co pamiętam ma wyjścia typo OC - i dlatego potrzebne te rezystory - tylko że w przypadku podłączenia LED-ów są one stanowczo za duże!! więc stąd ich ledwo widoczne świecenie. Do ich wysterowania (z portu P0) użyj jakiegoś drivera lub podłącz diody w miejsce tych 10k rezystorów (oczywiście w szeregu z rezystancją rzędu 300 Ohm), ale wtedy będziesz miał logikę zanegowana - wystawienie na porcie "1" spowoduje zgaśnięcie diody.