TRENGER HJELP!

Z

Zidane10

Guest
Hallo,

Jeg prøver å telle hvor mange ganger at knappen er blitt trykket.Jeg bruker TIMER 1.Hva gjør jeg feil her?Please help!Bruke mikroC v8.0 og PIC18F serien.
Takk på forhånd!

char * Tekst1 = "Count:";
unsigned short cnt;
char str;

void main () (
ADCON1 = 0x0F; / Config AN pins som digital
/ / Set up Timer 1
T1CON = 0x83; / RD16: 1; T1RUN: 0; T1CKPS1: 0 T1CKPS0: 0; T1OSCEN: 0; T1SYNC: 0; TMR1CS: 1; TMR1ON: 1
PIR1.TMR1IF = 0; / / clear TMR1IF
TMR1H = 0x80; / / Initialize Timer1 register
TMR1L = 0x00;
PIE1.TMR1IE = 1; / / aktiverer Timer1 avbryte
cnt = 0; / / initialize cnt
INTCON = 0xC0; / / Set GIE, PEIE

Lcd_Config (& PORTC, 2,3,1,7,6,5,4); / / Initialize LCD koblet til PORTC
Lcd_Cmd (LCD_CLEAR); / / Clear display
Lcd_Cmd (LCD_CURSOR_OFF); / / slå markøren av
Lcd_Out (1,1, Tekst1); / / Skriv ut tekst til LCD, 1nd rad, 2st kolonne

mens 1 ()
(

WordToStr (cnt, str); / / vis cnt fra avbruddet
Lcd_Out (1,9, str); / / Skriv ut tekst til LCD, 1nd rad, 7st kolonne
)
}//~!

void interrupt () (
cnt ;
PIR1.TMR1IF = 0; / / clear TMR1IF
TMR1H = 0x80;
TMR1L = 0x00;
)Lagt etter 42 1 timer minutter:noen?

 
Hei,
1.Hvor søker du bryteren inngang for telling?det bør være på T1OSO pin, og kan kreve bytte debouncing.
2.Hvorfor valgte du synkron teller, kanskje du kunne ha brukt asynkron teller med SYNCbar bit satt til høyt.
3.Tidtakeren avbrudd på overflyt, men du har intiated det til 0X8000, burde det ha vært 0xFFFF å få avbryte på hver puls.
4.In your main loop under Mens (1), bør du sjekke om CNT verdien er endret, så bare du skal skrive ut det til LCD.Kan være du må hente den gjeldende verdien av CNT i en CNTtemp og sammenligne med gamle CNT verdi og hvis endret, sender til LCD samt oppdatere CNT også.
5.Hva er meningen med bit 6 T1RUN i T1CON?Er det nødvendig å settes?

Jeg håper du vet MICROC godt og at påstandene er korrekte i henhold til kompilatoren spesifikasjoner.

Hilsen,
Laktronics

 

Welcome to EDABoard.com

Sponsor

Back
Top