06-11-2020, 10:33
(Ten post był ostatnio modyfikowany: 06-11-2020, 11:04 przez Robson Kerman.)
Ja przez pewien czas zastanawiałem się, czy to przypadkiem nie jest jakiś żart.
No bo, jeśli masz problem z miganiem diodą, to jesteś na pewno początkujący.
I na początku przygody z uC masz takie problemy ze zrozumieniem materiału, że jesteś gotowy zapłacić za jego napisanie innej osobie, to nie wróżę Ci w tej dziedzinie wielkiej kariery.
Ja w asm nie pisałem z 10 lat, a '51 widziałem ostatnio pewnie ze 20 lat temu, więc Ci nie pomogę.
Ale mogę coś podpowiedzieć:
Stwórz sobie pętlę główną, a w niej sprawdzaj stan przycisku. Jeśli został naciśnięty to skocz do funkcji obsługi diody, a stamtąd do pętli delay.
Ten delay to sobie policzyłem tak, że każde djnz to dla 12MHz jest równe 2uS. Masz zagnieżdżone trzy pętle:
50x200x250x2uS=5000000uS=5S
Jeszcze dochodzą powroty, więc pewnie jest ze 30mS z górką, ale już mi się nie chciało.
Można to zrobić na timerach, to nie blokowało by programu, ale na początek nauki powinno być OK.
P.S: Daję Ci ten kod za darmo.
No bo, jeśli masz problem z miganiem diodą, to jesteś na pewno początkujący.
I na początku przygody z uC masz takie problemy ze zrozumieniem materiału, że jesteś gotowy zapłacić za jego napisanie innej osobie, to nie wróżę Ci w tej dziedzinie wielkiej kariery.
Ja w asm nie pisałem z 10 lat, a '51 widziałem ostatnio pewnie ze 20 lat temu, więc Ci nie pomogę.
Ale mogę coś podpowiedzieć:
Stwórz sobie pętlę główną, a w niej sprawdzaj stan przycisku. Jeśli został naciśnięty to skocz do funkcji obsługi diody, a stamtąd do pętli delay.
Kod:
main: jnb p2.0, led ;sprawdzam przycisk, a jeśli wciśnięty to ->led
call main ;zapętlam
led: clr p1.6 ;zapalam diodę
call delay ;->delay
setb p1.6 ;zgaś diodę
call main ; wróć do main
delay: mov r5, #50
petla0: mov r6, #200
petla1: mov r7, #250
petla2: djnz r7,petla2
djnz r6,petla1
djnz r5,petla0
ret
50x200x250x2uS=5000000uS=5S
Jeszcze dochodzą powroty, więc pewnie jest ze 30mS z górką, ale już mi się nie chciało.
Można to zrobić na timerach, to nie blokowało by programu, ale na początek nauki powinno być OK.
P.S: Daję Ci ten kod za darmo.
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.