przerwać program oparty na pic16f877

B

bluemonday

Guest
hi ..Użyłem tego kodu programu my pic ..
unsigned int adc_value;

void main () (
ADCON1 = 0x80, / / Konfiguracja wejść analogowych i Vref
Trisa = 0xFF; / / PORTA jest wejście
TRISB = 0x3F; / / Pins RB7, RB6 są wyjścia

Usart_Init (115200);

do (
adc_value = Adc_Read (2) / / Get wyniki konwersji AD
Usart_Write (adc_value);
Delay_us (200);
) While (1);
)

Cant Get dokładne pobierania ..może ktoś mi w tym pomóc ..Chcę używać na interruput zegar do tego, ale im nie wiem jak ..plz help me ..każdy, kto wie ..plz niech mi pan ur kod ..

 
cześć,

Myślę, ur pomocą mikroc kompilatorvoid interrupt ()
(
if (PIR1.TMR1IF)
(
/ / nie ur kod tutaj
PIR1.TMR1IF = 0 / / jasne TMR1IF
)

)
void init_timer ()
(
TMR1L = 0;
TMR1H = 0;
T1CON = 0x31;
PIR1.TMR1IF = 0 / / jasne TMR1IF
PIE1 = 1; / / enable interrupts
INTCON = 0xC0;
)

u może zainicjować zegara przy init_timer function ()
gdy występuje przepełnienie timera, funkcja przerwania () będzie wywoływana automatycznie

 
również można użyć "specjalne wydarzenie" modułu CCP ...można odczytać w arkuszu danych (sorry I don `t pamiętam, czy 877 i 877A mają tego modułu ...) należy zmienić ccpr2 wartości dla własnych potrzeb ...(I tak zmienione i stary program, aby opublikować tutaj ....)( ono pracował różnią się także dla mnie ...)

void interrupt (void)
(
if (PIR2.CCP2IF)
(
PIR2.CCP2IF = 0;
Usart_write (ADRESH);
)
)

void main (void)

(
Trisa = 0xEF / / czy coś więcej ...
TRISB = 0;
TRISD = 0;
PORTB = 0;
PORTD = 0;
Usart_Init (115200);
ADCON0 = 0b01000001; / / ADC ustawienie
ADCON1 = 0x04;
T1CON = 0 / /
CCPR2H = 0x04;
CCPR2L = 0xE2 / / Fs = 800Hz = 1/1250us
TMR1H = 0 / /
TMR1L = 0 / /
CCP2CON = 0x0B;
PIR2.CCP2IF = 0;
PIE2.CCP2IE = 1;
INTCON.PEIE = 1;
INTCON.GIE = 1;
T1CON.TMR1ON = 1;
ADCON0.GO = 1;

while (1)
(
/ / już coś więcej tutaj .....
)
)

 
Ogrody i czytać karty i kroki należy wykonać w / D conversion:

1.skonfigurować / moduł D:
2.skonfiguruj / D przerwań:

jasne bit ADIF
zestaw ADIE bit
zestaw PEIE bit
ustawić bit GIE
3.Czas oczekiwania na nabycie
4.cpnversion start

zestaw GO / DONE bitowy (ADCON0)

5.wait for A / D conversion uzupełnienia, poprzez:

obwodów do GO / DONE nieco do rozliczenia (w / przerywa aktywne) lub
Czekam na / D przerwania

Wiem jak to zrobić krok 1 ..ale im nie wiesz, co robić w następnych krokach ..możesz mi wyjaśnić, jeśli masz czas ..Twojej pomocy będziemy wysoko cenione ..thnx alot ..Dodano po 7 minut:eek:raz ..Chcę przekazać .. ADRESLw jaki sposób to zrobić?Dodano po 10 minut:eek:raz ..CCPR2h = 0x04
CCPR2L = 0xE2

Czy może Pan wyjaśnić, dlaczego można umieścić więcej tej wartości?

 

Welcome to EDABoard.com

Sponsor

Back
Top