- posted
18 years ago
8051 i 1sekunda
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
Paweł Cern snipped-for-privacy@surname.neostrada.pl> napisał(a):
Zgadzam się z Pawłem , ale ... nie całkowicie ;)
50 ms/1 s (5%) spóźnienia , nie uznałbym za "(niewielkie, ale są)".void pr1() interrupt 1 using 1 { if ( zn == 20 ) P1 = 0; if ( zn == 40 ) {P1 = 1; zn = 0;} // TR0 = 0; TH0 = 0x4c; // TL0 = 0; // TR0 = 1; zn++; } Po powyższych zmianach błąd wynosi ~20 us co myślę , że można uznać za "(niewielkie, ale są)" ;-)
Pozdrawiam Piotrek
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
Użytkownik Lukas napisał:
Mocno się mija?
Może któraś z poniższych informacji pomoże:
Mode 0 Putting either Timer into Mode 0 makes it look like an 8048 Timer, which is an 8-bit Counter with a *divide-by-32 prescaler*[...]
Jakby sugerowali dodatkowy podzial 1/32 ...
Mode 1 Mode 1 is the same as Mode 0, except that the Timer register is being run with all 16 bits.
Jest jeszcze zdaje się rejestr CKCON i tam bit X2, który umożliwia przestawienie procka w tryb pracy 1/6 (default jest chyba 1/12). oraz T0X2 ktory wlacza prescaler 1/2 dla zgara T0. Warto sprawdzic jakie mają wartości (CKCON zdaje sie moze byc tylko programowany przez parallel programmer).
- Vote on answer
- posted
18 years ago
Lukas napisal:
Na studiach na laborce mialem taki fajny sprzetowy uklad z 8051 i jesli mnie pamiec nie myli to zeby to bylo dokladnie to trzeba sobie wyliczyc ile cykli bedzie sie wykonywal program do miejsca ustawiania timerow i ew. odpowiednio skorygowac.. (ale to juz sugerowal ci ktos ponizej a ja przyznam ze za bardzo nie pamietam juz jak to szlo ) :(
Wlasnie sie doszukalem jakis prostych programikow z tych laborek. tu jest jakis przyklad z timerem ale za chiny nie przypomne sobie szczegolow. podejrzewam ze ma mrugac diodami na wyjsciu co iles... : CZEST EQU 50000 CZAS EQU 10 WYJSCIE BIT P5.1
DSEG AT 20H LICZ: DS 1
CSEG AT 8000H AJMP START ORG 802BH DJNZ LICZ,KON MOV LICZ,#CZAS INC A MOV P4,A SETB WYJSCIE CLR WYJSCIE KON: CLR TF2 RETI NOP NOP ORG 8100H START: CLR WYJSCIE MOV LICZ,#CZAS ; USTAWIENIE T2 MOV CRCL,#LOW(10000H-CZEST) MOV CRCH,#HIGH(10000H-CZEST) MOV TH2,#HIGH(10000H-CZEST) MOV TL2,#LOW(10000H-CZEST) MOV T2CON,#91H SETB ET2 ; START MOV A,#1 MOV P4,A SETB WYJSCIE CLR WYJSCIE SETB EAL LJMP $ NOP NOP END
moze ci sie przyda do czegos...
Pozdrawiam