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
)
продължи;
) / / Нека да прекъсне своята работа
)
тази рутинна работа на таймера, но не използват прекъсвам.
Какво трябва да направя, за да получите прекъсват работа
/************************************************* *** /
/ * Пример код за използване 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
)
продължи;
) / / Нека да прекъсне своята работа
)