Prosím pomôžte o Timer0 pic16F877A

M

mickbristol

Guest
hello, i am on PIC.Snažím sa prepínať LED na porte D pomocou timer0 a prescaler dosiahnuť 1 sekundy.

Prosím, opravte ma, či im zle.
i použiť krystal 8MHz.
takže výučba cyklu je 1 / (8000000 / 4) = 500ns,
pomocou prescaler na 256.môj cyklus stáva 500ns x 256 = 128us
Budem robiť 235 cyklov na test z INTCON, 2
a 235 x 2 na nasledujúci Choď
Budem robiť LOOP 11 krát a plus niekoľko dodatočné pokyny Mal som
(235x2) (235) 10 = 715
715x11 = 7865 slučky cyklov
7865x128us = 1,00672
sekúnd
, Ale na mojej dosky .. je oveľa rýchlejšia!Řekl bych, 0.5 sec
môže ktokoľvek opraviť Kde je moja chyba?

mockrát děkuji

Tu je kód

list p = 16F877A
#
Include P16F877A.inc

__CONFIG _CP_OFF & _DEBUG_OFF & _WRT_OFF & _CPD_OFF & _LVP_OFF & _PWRTE_OFF & _BODEN_OFF & _WDT_OFF & _HS_OSC

org 0x0000
LOOP EQU 0x20
goto hlavných
hlavný
banksel PORTD
clrf PORTD; jasné portu D

banksel TRISD; banky 1
movlw b'00000000 '; zaťaženie 0000 0000
movwf TRISD; viedla portD výstup

BCF OPTION_REG, 5; vnútorné hodiny
BCF OPTION_REG, 3; prescale k TMR0

BSF OPTION_REG, 0; prescaler na 1:256
BSF OPTION_REG, 1
BSF OPTION_REG, 2
L1
banksel LOOP
movlw d'11 '
movwf LOOP

L2
banksel TMR0; bank0
movlw d'20 '; nabíjačka 0001 0100
movwf TMR0; v TMR0
BCF INTCON, 2; jasné vlajky

L3 btfss INTCON, 2; test vlajky timer0
goto L3

decfsz LOOP, 1. decembra do
1. LOOP a preskočiť nasledujúce instru keď LOOP = 0
goto L2

comfy PORTD; dopĺňať PORTD
goto L1; ísť do LOOP
koniec

 
Timer0 nahrán s 20 a budú počítať 235 x 128 = 30080 nami nás (prerušenie nastáva každých 30,08 ms).Tak sa s 1, mali by ste používať 1s / 30.08ms = cca 33 krát nie 11, ako ste použili v slučke.

 
nepoužívajú tmr0 prerušiť ...
stačí použiť meškanie čiastkový ..........<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Úsmev" border="0" />
 
Vďaka rkodaira
takže keď chápem, budete vynásobiť 235 počíta s časovačom bez starajúca sa o cykly DEC a Choďte?
Myslel som, že ak budete používať prescaler ste kalkulovať nový cyklus času, a tie sa vzťahujú všetky pokyny, aby tento nový cyklus času ...?

Vďaka xylynn taky, já jsem jen učenia, takže je len na prax na timer0 vo chvíli, ale som stále zaujíma, čo máte na mysli meškanie čiastkový?

Vďaka

 
Citácia:

takže keď chápem, budete vynásobiť 235 počíta s časovačom bez starajúca sa o cykly DEC a Choďte?

Myslel som, že ak budete používať prescaler ste kalkulovať nový cyklus času, a tie sa vzťahujú všetky pokyny, aby tento nový cyklus času ...
?

 
Je
to práca a já to chápu

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Úsmev" border="0" />

ďakujem ti

áno ihave bolo urobené niekoľko postupov s niekoľkými slučkami taky: p

Vďaka ešte raz, so sebou aj na moje učenie rovnako tak aj niektoré správy môžu pridávať často lol

bye poďakovať ako

 

Welcome to EDABoard.com

Sponsor

Back
Top