programowanie PIC16F84 w C



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "wilk" <wilk125_at_nospam_poczta.onet.pl>
Subject: programowanie PIC16F84 w C
Date: Mon, 27 May 2002 19:07:49 +0200


Jak napisac funkcję obsługującą przerwanie, czy ona musi mieć specjalną
nazwę nazywać ( każde przerwania ma swoją nazwe funkcj ) czy się to jakoś
deklaruje ?



Poprzedni Następny
Wiadomość
Spis treści
From: "AKcorp" <AKcorp_at_nospam_friko.onet.pl>
Subject: Re: programowanie PIC16F84 w C
Date: Fri, 31 May 2002 11:31:37 +0200


Jesli chodzi o HI-TECH PICC compiler to:

Jak napisac funkcję obsługującą przerwanie,
Zobacz zalacznik.

czy ona musi mieć specjalną
nazwę nazywać
Nazwa jest nieistotna.


( każde przerwania ma swoją nazwe funkcj ) czy się to jakoś
deklaruje ?
Jedna funkcja dla wszystkich przerwan. Trzeba sprawdzac jakie sa
ustawione flagi (tak jak w przykladzie).

A tu jest wiecej:
http://www.htsoft.com/

A.



begin 666 intr1.c
M(VEN8VQU9&4)/'!I8RYH/_at_nospam_T*#0HO*_at_nospam_T*("H)26YT97)R=7!T(&1E;6\_at_nospam_9F]R
M(%!)0SL_at_nospam_=V%I="!F;W(_at_nospam_8G5T=&]N('!R97-S(&]N(%)","])3E0L#0H_at_nospam_*_at_nospam_ET
M=7)N(&]N(&$_at_nospam_<F5L87D_at_nospam_;VX_at_nospam_86YO=&AE<B!P;W)T(&)I="!F;W(_at_nospam_82!P97)I
M;V0_at_nospam_;V8_at_nospam_=&EM92X-"B J"49O<B!S:6UP;&EC:71Y(&AE<F4L(&QI=&5R86P_at_nospam_
M8V]N<W1A;G1S(&%R92!U<V5D+"!U<W5A;&QY('1H97-E#0H_at_nospam_*_at_nospam_ES:&]U;&0_at_nospam_
M8F4_at_nospam_8V%L8W5L871E9"!W:71H(&-O;7!I;&4M=&EM92!A<FET:&UE=&EC+_at_nospam_T*
M("HO#0H-"_at_nospam_T*<W1A=&EC(&)I= D)4D5,05D_at_nospam_0" H=6YS:6=N960I)E!/4E1"
M*C_at_nospam_K-SL)+R\_at_nospam_=7-E('1H:7,_at_nospam_8FET('1O(&1R:79E(')E;&%Y#0IS=&%T:6,_at_nospam_
M=6YS:6=N960_at_nospam_:6YT"7)E;&%Y7W1I;65R.PD)"2\O('1I;65R('9A;'5E(&9O
M<B!R96QA>2!D<FEV97(-"_at_nospam_T*=F]I9 T*;6%I;BAV;VED*0T*>PT*"2\J('-E
M='5P('-T=69F("HO#0H-"_at_nospam_E214Q!62 ](#$["0DO+R!E;G-U<F4_at_nospam_<F5L87D_at_nospam_
M:7,_at_nospam_;V9F(&)E9F]R92!E;F%B;&EN9R!O=71P=70-"_at_nospam_E44DE30B ](#!X,T8[
M"0DO+R!0;W)T($(_at_nospam_8FET<R W(&%N9" V(&%R92!O=71P=70_at_nospam_#0H)5#!#4R ]
M(# ["0DO+R!4:6UE<B!I;F-R96UE;G1S(&]N(&EN<W1R=6-T:6]N(&-L;V-K
M#0H)5#!)12 ](#$["0DO+R!%;F%B;&4_at_nospam_:6YT97)R=7!T(&]N(%1-4C _at_nospam_;W9E
M<F9L;W<-"_at_nospam_E)3E1%1$<_at_nospam_/2 P.PD)+R\_at_nospam_9F%L;&EN9R!E9&=E('1R:6=G97(_at_nospam_
M=&AE(&EN=&5R<G5P= T*"4E.5$4_at_nospam_/2 Q.PD)+R\_at_nospam_96YA8FQE('1H92!E>'1E
M<FYA;"!I;G1E<G)U<'0-"_at_nospam_E'244_at_nospam_/2 Q.PD)+R\_at_nospam_1VQO8F%L(&EN=&5R<G5P
M="!E;F%B;&4-"_at_nospam_EF;W(H.SLI#0H)"4-,4E=$5"_at_nospam_I.PDO+R!)9&QY(&MI8VL_at_nospam_
M=&AE(&1O9PT*?0T*#0IS=&%T:6,_at_nospam_=F]I9"!I;G1E<G)U<'0-"FES<BAV;VED
M*0D)"2\O($AE<F4_at_nospam_8F4_at_nospam_:6YT97)R=7!T(&9U;F-T:6]N("T_at_nospam_=&AE(&YA;64_at_nospam_
M:7,-"_at_nospam_D)"0DO+R!U;FEM<&]R=&%N="X-"GL-"_at_nospam_EI9BA4,$E&*2!["0D)"2\O
M('1I;65R(&EN=&5R<G5P= T*"0E435(P("T](#(U,#L_at_nospam_"0D)+R\_at_nospam_<F5L;V%D
M('1H92!T:6UE<B M(#(U,'53('!E<B!I;G1E<G)U<'0-"_at_nospam_D)5#!)1B ](# [
M"0D)+R\_at_nospam_8VQE87(_at_nospam_=&AE(&EN=&5R<G5P="!F;&%G#0H)"6EF*')E;&%Y7W1I
M;65R("$](# I"0DO+R!I<R!T:&4_at_nospam_<F5L87D_at_nospam_=&EM97(_at_nospam_<G5N;FEN9S\-"_at_nospam_D)
M"7)E;&%Y7W1I;65R+2T["0DO+R!D96-R96UE;G0_at_nospam_:70-"_at_nospam_D):68H<F5L87E?
M=&EM97(_at_nospam_/3T_at_nospam_,"D)"2\O(&EF(&ET(&AA<R!T:6UE(&]U= T*"0D)4D5,05D_at_nospam_
M/2 Q.PD)+R\_at_nospam_='5R;B!T:&4_at_nospam_<F5L87D_at_nospam_;V9F#0H)"5!/4E1"(%X](#!X-# [
M"0D)+R\_at_nospam_=&]G9VQE(&$_at_nospam_8FET('1O('-A>2!W92=R92!A;&EV90T*"7T-"_at_nospam_EI
M9BA)3E1&*2!["0D)"2\O(&1I9"!W92!S964_at_nospam_82!B=71T;VX_at_nospam_<')E<W,_#0H)
M"5)%3$%9(#T_at_nospam_,#L)"0DO+R!T=7)N('1H92!R96QA>2!O;_at_nospam_T*"0ER96QA>5]T
M:6UE<B ](#0P,# ["0DO+R!S=&%R="!T:&4_at_nospam_=&EM97(_at_nospam_+2 T,# P('1I8VMS
M(#T_at_nospam_,2!S96-O;F0-"_at_nospam_D)24Y41B ](# ["0D)+R\_at_nospam_8VQE87(_at_nospam_=&AE(&EN=&5R
/<G5P= T*"7T-"GT-"_at_nospam_T*
`
end


Poprzedni Następny
Wiadomość
Spis treści
From: "AKcorp" <AKcorp_at_nospam_friko.onet.pl>
Subject: Re: programowanie PIC16F84 w C
Date: Fri, 31 May 2002 11:57:17 +0200


Jesli chodzi o HI-TECH PICC compiler to:

Jak napisac funkcję obsługującą przerwanie,
Zobacz na ponizej.

czy ona musi mieć specjalną
nazwę nazywać
Nazwa jest nieistotna.

( każde przerwania ma swoją nazwe funkcj ) czy się to jakoś
deklaruje ?
Jedna funkcja dla wszystkich przerwan. Trzeba sprawdzac jakie sa
ustawione flagi (tak jak w przykladzie).

A tu jest wiecej:
http://www.htsoft.com/

A.



#include <pic.h>

/*
* Interrupt demo for PIC; wait for button press on RB0/INT,
* turn on a relay on another port bit for a period of time.
* For simplicity here, literal constants are used, usually these
* should be calculated with compile-time arithmetic.
*/


static bit RELAY _at_nospam_ (unsigned)&PORTB*8+7; // use this bit to drive relay
static unsigned int relay_timer; // timer value for relay driver

void
main(void)
{
/* setup stuff */

RELAY = 1; // ensure relay is off before enabling output
TRISB = 0x3F; // Port B bits 7 and 6 are output
T0CS = 0; // Timer increments on instruction clock
T0IE = 1; // Enable interrupt on TMR0 overflow
INTEDG = 0; // falling edge trigger the interrupt
INTE = 1; // enable the external interrupt
GIE = 1; // Global interrupt enable
for(;;)
CLRWDT(); // Idly kick the dog
}

static void interrupt
isr(void) // Here be interrupt function - the name is
// unimportant.
{
if(T0IF) { // timer interrupt
TMR0 -= 250; // reload the timer - 250uS per interrupt
T0IF = 0; // clear the interrupt flag
if(relay_timer != 0) // is the relay timer running?
relay_timer--; // decrement it
if(relay_timer == 0) // if it has time out
RELAY = 1; // turn the relay off
PORTB ^= 0x40; // toggle a bit to say we're alive
}
if(INTF) { // did we see a button press?
RELAY = 0; // turn the relay on
relay_timer = 4000; // start the timer - 4000 ticks = 1 second
INTF = 0; // clear the interrupt
}
}