afbryde baseret program til pic16f877

B

bluemonday

Guest
hej ..Jeg brugt denne kode til at programmere mit pic ..
unsigned int adc_value;

void main () (
ADCON1 = 0x80; / / Configure analoge indgange og Vref
TRISA = 0xFF; / / PORTA er input
TRISB = 0x3F; / / Pins RB7, RB6 er udgange

Usart_Init (115200);

do (
adc_value = Adc_Read (2); / / Get resultaterne af AD konvertering
Usart_Write (adc_value);
Delay_us (200);
) While (1);
)

jeg kan ikke få en præcis prøvetagning ..kan nogen hjælpe mig med dette ..Jeg vil gerne bruge en baseret interruput timer til dette, men im dont kende hvor ..plz hjælp mig ..nogen der kender ..plz lad mig få ur-kode ..

 
hej,

Jeg tror, ur bruger mikroc compilervoid interrupt ()
(
if (PIR1.TMR1IF)
(
/ / sætte ur-kode her
PIR1.TMR1IF = 0; / / klar TMR1IF
)

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

u kan formatere timer ved hjælp af funktionen init_timer ()
når timeren overløbet sker, funktionen interrupt () vil automatisk kaldes

 
også kan du bruge den "særlige tilfælde" af den fælles handelspolitik modul ...du kan læse det i dataarket (sorry I don `t huske, hvis 877 og 877A har dette modul ...) bør du ændre ccpr2 værdier for dine egne behov ...(Jeg har lige ændret og gamle program til post her ....)( det fungerede variere godt for mig ...)

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

void main (void)

(
TRISA = 0xEF; / / eller noget mere ...
TRISB = 0;
TRISD = 0;
PORTB = 0;
PORTD = 0;
Usart_Init (115200);
ADCON0 = 0b01000001; / / ADC indstilling
ADCON1 = 0x04;
T1CON = 0; / /
CCPR2H = 0x04;
CCPR2L = 0xE2; / / F = 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)
(
/ / lægge noget mere her .....
)
)

 
Kontroller datablad og være opmærksom på begrebet "Tad '

 
Jeg haver læse databladet og disse trin bør ske på en A / D konvertering:

1.konfigurere A / D-modul:
2.konfigurere A / D afbryder:

klar ADIF bit
sæt ADIE bit
sæt PEIE bit
sæt GIE bit
3.vente på erhvervelse tid
4.start cpnversion

sæt GO / DONE bit (ADCON0)

5.vente på A / D konvertering til at udfylde, enten ved:

afstemningsstederne for GO / DONE bit der skal klippes (w / afbryder aktiveret) ELLER
venter på A / D-afbryder

Jeg ved, hvordan man gør trin 1 ..men im ikke sikker på, hvad du skal gøre for de næste skridt ..kan du venligst forklare mig, hvis du har tid ..din hjælp vil vi meget værdsat ..thnx en masse ..Lagt efter 7 minutter:eek:g desuden ..Jeg ønsker at overføre ADRESL ..Hvordan vil jeg gøre det??Lagt efter 10 minutter:eek:g desuden ..CCPR2h = 0x04
CCPR2L = 0xE2

kan du forklare det mere, hvorfor du sætte dette værdier?

 

Welcome to EDABoard.com

Sponsor

Back
Top