jak opóźnienia w języku C?

J

Jackwang

Guest
Chcę napisać kod w celu wykonania przez długi czas (100ms) w C51 z języka C, można dać kilka dobrych rad?
 
Tworzenie pętli oprogramowanie do generowania opóźnień w C zależy od kodu, kompilator redukuje się do. Możesz spróbować coś takiego (i = 0; i
 
Myślę, że można korzystać z poleceń asm w C, a następnie użyć NOP ... Myślę, że spowodowałoby opóźnienie, ale jego zbyt małe, spróbuj pętli tak można ustawić pożądane opóźnienie
 
Użyj timer do generowania przerwań dla u podstawy czasu chcesz wybrać. np. 10 ms lub 1ms Następnie za pomocą zmiennych timer oprogramowania. Initailise go poprawnie (np. w przypadku opóźnienia 100ms z 10ms podstawy czasu, zainicjalizować ją z 10), zmniejszanie jej przerwanie i na każdym jest na 0, opóźnienie ur się skończyła i można zrobić u ur dalszej działalności.
 
opóźnienie () należy używać funkcji "C". Myślę, że opóźnienie (1) jest 1ns zwłoki, lecz sprawdzić, czy pomaga, a otrzymasz odpowiedź.
 
W przypadku korzystania przez opóźnienie "na" pętli nie zapomnij umieścić lotnych do liczenia zmienna - w przeciwnym razie kod może być usunięte przez optymalizacji kompilatora.
 
Przede wszystkim pytanie, jak dokładnie się opóźnienie powinno być? Jeśli nie, to możesz po prostu użyć pętli for i tylko doświadczenia z prób i błędów, co liczba pętli powinno być. Albo można obliczyć z ASM kodu, do którego C kompiluje się do (opcode). Możesz także użyć funkcji opóźnienia, jeśli biblioteka obsługuje. W przypadku trzeba bardzo ustalić czas opóźnienia, niż najlepiej jest użyć Przerwanie timera jak Suryakant już zaproponowane. Jedyne co chciałbym dodać, że trzeba zmiennej (semafor) w subrpogram jeżeli opóźnienie jest potrzebne, i sprawdzić jego wartość w pętli. Od przerwać, gdy czasu jest przekazywana, zmianie wartości tego semafora. Tak więc precyzja jest w ciągu 10-20 usec (czas potrzebny do wejścia na przerwanie timera, decremenet SW licznika należy sprawdzić, czy jest równa zero, jeśli tak zmienić semaforów i wyjście z przerwania + chack semafora w programie). Belsugului Belsugului
 
Osoba siedząca obok mnie mówi, że jest znacznie lepiej używać subcode montaż do liczenia czasu. # Endasm czas opóźnienia kod asm #
 
void delay (unsigned int k) {unsigned int i; for (i = 0; i
 
Mój przyjaciel zawsze używać kodu montażu w C do generowania opóźnień, funkcja opóźnienia myślę, że działa tylko wtedy, gdy włączone time.h jeśli im prawidłowe. Polecenia zespołu NOP opóźni jednym cyklu zegara, jeśli im prawidłowe, lub liczbę cykli, więc to zależy od liczby oscylator NOP, który ma być zapętlony.
 

Welcome to EDABoard.com

Sponsor

Back
Top