Как timer0 прекъсват работата по PIC16f876a

G

Guest

Guest
Аз съм се чудех как да получите Timer0 прекъсват работата по 16f876a PIC.

тази рутинна работа на таймера, но не използват прекъсвам.
Какво трябва да направя, за да получите прекъсват работа

/************************************************* *** /
/ * Пример код за използване timer0 на 16f876a
/ * Само създава таймер и превключва пристанище
/************************************************* *** /

/************************************************* *****/
/ * Изчислява презареждат стойност за таймер
/************************************************* *****/

# включват <pic.h>
# включват <pic168xa.h>
# определи периода 10 / / период в нас - една секунда тук
# определят XTAL 16000000 / / честота кристал - 16MHz
# определят ICLK (XTAL / 4) / / кристал е разделен на четири
# определят СКАЛА 2 / / prescale от 2 - проверка за препълване!

# определят презареждат периода * ICLK/SCALE/1000000

грозен Int секунди; / / втори брой/************************************************* ******/
/ * Услуга за рутинна таймер 0 прекъсват * /
/************************************************* ******/
нищожен прекъсват
timer0_isr (Void)
(
/ / Секунда ;
/ / PORTB = (PORTB & & 0x01)?0:1; / / сменя пристанището ПИН 0
/ / TMR0IE = 1; / / в стаята прекъсват флаг преливник
/ / TMRO = 1; / / активирате таймера прекъсне?

)

Основните ()
(
/ / Инициализира таймера 0;
Ди (); / / изключите всички прекъсват
PORTB = 0; / / ясно пристанище б
TRISB = 0xF7 / / Rb3 е оп
T0CS = 0; / / вътрешна инструкция цикъл
PEIE = 0;
PIR1 = 0;
GIE = 0;
PSA = 1; / / Prescaler възложени WDT да получите 1:1
TMR0IE = 0; / / активирате timer0 прекъсват
EI (); / / enble всички прекъсва
за (;

<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Wink" border="0" />(
IF (TMR0IF) / / проверка на флага
(
TMR0IF = 0; / / в стаята прекъсват флаг преливник
TMR0 = 0xEF; / / таймер натоварване със стойност
Rb3 = (Rb3 & & 0x01)?0:1; / / сменя пристанището ПИН 0
)
продължи;
) / / Нека да прекъсне своята работа
)

 
incomment само тези:
timer0_isr (Void)
(
секунда ;
PORTB = (PORTB & & 0x01)?0:1; / / сменя пристанището ПИН 0
TMR0IE = 1; / / в стаята прекъсват флаг преливник
TMRO = 1; / / активирате таймера прекъсне?
)
и компилирате

 
/************************************************* *** /
/ * Пример код за използване timer0 на 16f876a
/ * Само създава таймер и превключва пристанище
/************************************************* *** /

/************************************************* *****/
/ * Изчислява презареждат стойност за таймер
/************************************************* *****/

# включват <pic.h>
# включват <pic168xa.h>
# определи периода 10 / / период в нас - една секунда тук
# определят XTAL 16000000 / / честота кристал - 16MHz
# определят ICLK (XTAL / 4) / / кристал е разделен на четири
# определят СКАЛА 2 / / prescale от 2 - проверка за препълване!

# определят презареждат периода * ICLK/SCALE/1000000

грозен Int секунди, some_usecond, value_for_one_second / / втори брой/************************************************* ******/
/ * Услуга за рутинна таймер 0 прекъсват * /
/************************************************* ******/
нищожен прекъсват
timer0_isr (Void)
(

/ / ако (TMR0IF) / / ако използвате различни Int incomment тези
/ / (
TMR0IF = 0; / / в стаята прекъсват флаг преливник
TMR0 = 0xEF; / / таймер натоварване с стойност (не сигурен, 239 го проверите)
some_usecond ;
/ /)IF (usecond == value_for_one_second) (
useconds = 0;
секунда ;

Rb3 = (Rb3 & & 0x01)?0:1; / / сменя пристанището ПИН 0

)
)

Основните ()
(

some_useconds = 0;
секунди = 0;
value_for_one_second = 40; / не / сигурен за стойността на 40
/ / Инициализира таймера 0;
/ / ди (); / / изключите всички прекъсват
PORTB = 0; / / ясно пристанище б
TRISB = 0xF7 / / Rb3 е оп
T0CS = 0; / / вътрешна инструкция цикъл
PEIE = 0;
PIR1 = 0;
GIE = 1;
PSA = 1; / / Prescaler възложени WDT да получите 1:1
TMR0 = 0;

TMR0IE = 1; / / активирате timer0 прекъсват

/ / EI (); / / enble всички прекъсва

докато (1) (
)(

 

Welcome to EDABoard.com

Sponsor

Back
Top