Witajcie Moze ktos z grupowiczow mnie oswieci ;>
W CodeVision pisze tak:
PORTA=0x01; DDRA=0x01; pin 0 wyjscie, reszta wejscia DDRB.0=1; wyjscie do swiecenia dioda DDRB.1=1;
if(PINA.1) petla_dobra(); else petla_zla();
gdzie petla_dobra() mruga dioda zielona na PORTB.0 a petla_zla() mruga dioda na PORTB.1. Zwieram PORTA.0 z PORTA.1 i tu sa schody, bo na PINA.1 powinien wykryc 1 z PORTA.0 a tak nie jest. Swiecenie jednej z diod zalezy tylko od ustawienia portu. Probowalem wiec tak :
#asm petla: clr r25 in r25,$1B ; czytam port A ror r25 ; bit 1 przesuwam do carry ror r25
brcs dobry ; jesli w carry 1 to znaczy ze na PINA.1 wykryl jedynke i skacze do "dobry" ldi r25,2 ; tu tylko zapalam diode na PORTB.1 out $18,r25 JMP petla dobry: ldi r25,1 ; a tu zapalam diode na PORTB.0 out $18,r25 JMP petla #endasm
No i w zaleznosci czy zwieram, czy rozwieram, powinny sie gasic i zapalac odpowiednie diody, ale nadal tego nie wykrywa. Swieci albo jedna, albo druga, w zaleznosci czy piny wejsciowe ustawie jako Tri-state czy z "pull-up resistor". Pytanie wiec.... co moze byc przyczyna, ze ani if(PINA.1) ani in r25,$1B nie wykrywa poprawnie stanu ?
pozdr Marcin