Pomoc z kodem

To forum jest dla wszystkich pasjonatów wiecznie młodych mikrokontrolerów '51. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
kamil1906
-
Posty: 1
Rejestracja: 26 cze 2016, 13:17
Lokalizacja: Kraków

Pomoc z kodem

Post autor: kamil1906 » 26 cze 2016, 13:20

Dzień dobry. Mam problem, gdyż napisałem program generujący sygnał o częstotliwości rezonatora kwarcowego, czyli 12MHz i chciałbym go przerobić na program, w którym mogę generować przebiegi o zadanej częstotliwości. Wydaje mi się, że pierwszą zmianą powinien być rejestr TMOD na: mov TMOD, #00000101b.

Mój kod generujący przebieg o częstotliwości 12 MHz:

Kod: Zaznacz cały

led0 bit P1.0

start:

mov TMOD, #00000001b 			;licznik T0 w trybie 1
mov TL0, #0AFH 				;przenieś 0AFH do TL0
mov TH0, #3CH 				;przenieś 3cH do TH0
setb TR0 					;impulsy doprowadzane do licznika T0

testujTF0:
JNB TF0 					;sprawdzanie bitu przepełnienia TF0
ORL TL0, #0AFH 				;suma logiczna
mov TH0, #3CH 				;przenieś 3CH do TH0
INC P2 						;zwiększ o jeden P2
CPL led0 					;neguj led0
CLR TF0 					;zeruj TF0
SJMP testujTF0:
end
Ostatnio zmieniony 26 cze 2016, 14:45 przez kamil1906, łącznie zmieniany 1 raz.

bazylak
-
Posty: 7
Rejestracja: 24 lip 2009, 14:05
Lokalizacja: Lodz

Pomoc z kodem

Post autor: bazylak » 28 cze 2016, 17:03

Tak na szybko - raczej nie wygenerujesz tym 12MHz. Zbyt duży optymizm :) Wykonanie rozkazu pochłania określony czas. Jeden cykl maszynowy zawiera 12 cykli rezonatora czyli dla 12MHz to 1 us. A czas wykonania rozkazu to 1,2 lub 4 cykle maszynowe. Więc gdybyś mógł program "opękać" jednym rozkazem miałbyś góra 1MHz. A tak się raczej nie da ...
Pozdrawiam.

ODPOWIEDZ