simonel napisał: ; Generator 50 Hz
; na P3.0
; Q=11.059 Mhz
;********************************
ORG 00h
sjmp start
ORG 0Bh
ljmp T0FULL
;**************************************************
ORG 30h
start: mov tmod,#00000001b
mov th0,#220
mov tl0,#0
setb ie.1 ;zezwolenie na przerwanie od T0
setb ie.7 ;zezwolenie na przerwania
setb tcon.4 ;uruchomienie licznika T0
program: nop
nop
nop
nop
sjmp program
;**************************************************
;przerwanie od licznika T0
T0FULL: cpl p3.0 ;
mov th0,#220
mov tl0,#0
reti
co do twojego programu, to duzo sie nad nim zastanawialem i doszedlem do cegos takiego(niech mnie ktos poprawi jaksie myle. otoz zastanowil mnie fakt tego jak policzzyles i w jaki sposob ustawiles rejestry TH0 i TL0, skad wiedziales co wpisac i wpadlem na takie cos:
dajmy na to XTAL - 11,059MHz
fiadomo efektywna f jest 12 razy mniejsza a wiec 11059000 /12 co daje nam okolo 921583(nazwijmy to ilosc cykli maszynowych na 1s)
teraz musimy miec czestotliwosc(niech bedzie te 50Hz)
ty w rejestry TH0 i TL0 wpisales nastepujace dane
TH0=220
TL0-0
co daje:
liczba dziesietna 220=liczba binarna 11011100
liczba dziesietna 0=liczba binarna 00000000
po polaczeniu w cale slowo mamy: 1101 1100 0000 0000 a to wynosi dziesietnie: 56320
maksymalna moze byc 65535, a wiec odejmijmy i otrzymujemy z roznicy 65535-56320 liczbe 9215
teraz ciekawostka liczba 9215 jest od liczby 921583 mniejsza (zaokraglajac) 100 razy, a te wlasnie 100 jest dwa razy wieksze od naszej f jaka chcielismy uzyskac
Teraz pytanie, duzo sie pomylilem?????????????
jako zalacznik daje program zrobiony w delhi5(przezemnie) tak na szybkiego, ktory potrzebuje tylko danych XTAL, F, a w wyniku podaje co wpisac do TH0 i TL0 wg w/w zasady.