Sida 2 av 3
Re: Hur tilldela värden till PIC-filregister i C?
Postat: 30 januari 2009, 13:46:28
av Icecap
Hur enkelt som helst, bara man gör det rätt!
Kod: Markera allt
/* Introduktion */
#define ON 1
#define OFF 0
#define femtio PORTA.0
#define sextio PORTA.1
#define frekvens femtio,sextio
#define Hcount100Hz 0b00100111; // 0b0010011100010000=10000
#define Lcount100Hz 0b00010000;
#define Hcount120Hz 0b00100000; // 0b0010000010001101=8333
#define Lcount120Hz 0b10001101;
void main(void)
{
ANSEL = 0; // Clear ANSEL file registry
ANSEL.ANS2 = 1; // Configure AN2 as analog I/O
TRISA = 0b00000111; // Configure AN0, AN1 and AN2 as inputs, the rest as outputs.
// Bit TRISA<3> is a read only input pin, for MCLR (active low) input.
TRISB = 0x00; // Configure I/O, all available PORTB pins as outputs
TRISC = 0; // Configure I/O, all available PORTC pins as outputs
CCPR1H = 0; // Clear both Timer 1 holding registers
CCPR1L = 0;
TMR1L = 0; // Clear both Timer 1 holding registers
TMR1H = 0;
PIE1.CCP1IE = 1; // Enable CCP1 interrupt flag
PIR1.CCP1IF = 0; // Clear CCP1 interrupt flag
PIE2.OSFIE = 1; // Enable oscillator interrupt flag
OSCCON = 0b01100001; // Configure internal oscillator (HFINTOSC) to 4 MHz and to start oscillating.
T2CON = 0b00100001; // Set TMR2 prescaler 4, postscaler 5
ADCON0.ADFM = 0; // (ADFM=0) ADC "delay" look at ADRESH 8 most significant bits */
CCP1CON=0b00001011; // Configure CCP1CON to trigger a special event on TMR1=CCPR match
while(true)
{
if (Port A.0) while (I1);
/* Operation XOR */
else while (I2);
/* Operation XOR */
/* A/D conversion */
/* Delay */
} // while true (always)
} // main
Re: Hur tilldela värden till PIC-filregister i C?
Postat: 30 januari 2009, 13:47:34
av speakman
Det borde ju stå som första exempel i första kapitlet i första boken om kompilatorn. Men prova som jag sa och se om det kompilerar. Utifrån det är det lättare att gå vidare.
Re: Hur tilldela värden till PIC-filregister i C?
Postat: 30 januari 2009, 13:47:43
av sodjan
Skriv nya inlägg, det där var aldeles för långt för att man ska se
att det har ändrats...
> men hur svårt skall det vara att nollställa ett filregister?
Skitenkelt, sannolikt. Det är inte *jag* som har dokumentationen.
Re: Hur tilldela värden till PIC-filregister i C?
Postat: 30 januari 2009, 13:50:08
av TomasL
Jens Gunnarsson skrev:Visst jag håller på att lära mig bäggedera, men hur svårt skall det vara att nollställa ett filregister?
skitenkelt
#asmline clrf REG ( i WIZ-C),
eller
REG=0; i samma kompilator.
Hur du skriver exakt, beror på hur det är gjiort i kompilatorn, hur register mm är namngivna och hur det är tänkt att man skall använda dem.
Det STÅR i dina manualer, gör det inte det, så byt kompilator.
Re: Hur tilldela värden till PIC-filregister i C?
Postat: 30 januari 2009, 13:55:31
av Jens Gunnarsson
Här är folk snabbare än jag hade väntat mig, och det är bra. Jag förstår inte varför tonen så snabbt blev ganska hätsk. Låt mig istället fråga så här:
Hur skall jag (i C) tilldela ett åttabitarstal till ett filregister C?
Re: Hur tilldela värden till PIC-filregister i C?
Postat: 30 januari 2009, 13:59:48
av sodjan
> Hur skall jag (i C) tilldela ett åttabitarstal till ett filregister C?
Och du är 100% säker på att det inte framgår av manualen eller kodexempel
som var med kompilatorn ?
EDIT:
Förresten, vad menar du med "ett åttabitarstal" ? En konstant ?
Du har ju själv gjort det i de koder som du har postat tidigare !?
T.ex : "ANSEL = 0;".
Du kanske kan förtydliga lite...
Re: Hur tilldela värden till PIC-filregister i C?
Postat: 30 januari 2009, 14:01:34
av Jens Gunnarsson
Jovisst, men "ANSEL = 0;" ger ju ett fel.
Jag skall leta i kompilatorns dokumentation istället.
Tack ändå.
Re: Hur tilldela värden till PIC-filregister i C?
Postat: 30 januari 2009, 14:02:47
av TomasL
Jens Gunnarsson skrev:Här är folk snabbare än jag hade väntat mig, och det är bra. Jag förstår inte varför tonen så snabbt blev ganska hätsk. Låt mig istället fråga så här:
Hur skall jag (i C) tilldela ett åttabitarstal till ett filregister C?
suck, tja
RegName=tal; återigen beroende på din kompilator, och hur den Fungerar.
Re: Hur tilldela värden till PIC-filregister i C?
Postat: 30 januari 2009, 14:30:46
av Icecap
"Jovisst, men "ANSEL = 0;" ger ju ett fel."
Jovars men VILKET fel? Klippa och klistra tack!
Att "stämningen blir hätsk" beror på att du helt enkelt skiter i att svara på de frågor som ställs, detta tolkas som att du skiter i folk och när man ger ett svar och frågaställaren tydligt visar att den man försöker att åstadkomma av kommunikation totalt dissas kan man lätt bli sned eller hur?
Svara alltså på frågorna och du ska se att stämningen är mycket vänlig här...
Re: Hur tilldela värden till PIC-filregister i C?
Postat: 30 januari 2009, 14:40:48
av sodjan
> Jag skall leta där istället. Tack ändå.
Exakt vad menar du med "istället" ?
Det förväntas nog att du letar där *först*...

Re: Hur tilldela värden till PIC-filregister i C?
Postat: 30 januari 2009, 15:21:35
av Jens Gunnarsson
Icecap skrev:"Jovisst, men "ANSEL = 0;" ger ju ett fel."
Jovars men VILKET fel? Klippa och klistra tack!
...
Det gorde jag i 13:42-inlägget på sidan 1.
Jag inser nu att det hinner trilla in en en del svar medan man skriver. Det är inte alla forum som är så här omedelbara.
Jag skall i fortsättningen förhandsgranska mina inlägg, och förhoppningsvis bespara oss alla en del hysteriska genmälen. Vissa har valt att vara anonyma. Då kan man ju kläcka ur sig vad som helst.
Re: Hur tilldela värden till PIC-filregister i C?
Postat: 30 januari 2009, 15:23:58
av TomasL
Vilka är anonyma?
Re: Hur tilldela värden till PIC-filregister i C?
Postat: 30 januari 2009, 15:32:02
av sodjan
> Jag skall i fortsättningen förhandsgranska mina inlägg,
Jag använder alltid knappen för just det, om det inte är
väldigt simpla inlägg. Av någon anledning är det mycket
enklare att se sina missar när texten "skrivs om" en gång.
> Vissa har valt att vara anonyma.
Jag har kollat tillbaka vilka som har deltagit i just denna tråden,
och den enda som är anonym för mig är du. Det är möjligt att
du har använt ditt riktiga namn, men det vet jag ju inte säkert.
Övriga har jag nog haft kontakt med direkt både via forumet och utanför.
Själv är jag knappast anonym, du kan hitta alla uppgifter här :
http://www.jescab.se/Kontakt.htm
Mitt intryck är att detta forum (till skillnad från många andra forum)
är väldigt "personligt" och de flesta känner de andra på ett eller annat
sätt, även utanför forumet.
Re: Hur tilldela värden till PIC-filregister i C?
Postat: 30 januari 2009, 15:32:45
av Icecap
"ANSEL = 0; // Clear ANSEL file registry
ANSEL.ANS2=1; // Configure AN2 as analog I/O
^------
Error[1] C:\Program Files\PK2proj\Work\synth5060Hz.c 19 : Syntax error
(The expression must be corrected. The marker ^------ shows
the approximate position where CC5X gives up. The documentation
should be checked if the cause is not obvious)"
Läs gärna vad det EGENTLIGEN står... det är INTE "ANSEL = 0;" som ger felet eller hur?
"ANSEL.ANS2=1;" ger däremot ett fel och det beror sannolikt på att CCX5 inte har den definition, svaret är alltså fortfarande "läs dokumentationen" och leta efter definitionen an ANSEL. Ibland kan det vara "ANSEL_ANS2" som fungerar men det beror på kompilern och dess definitioner.
Oftast finns det en fil med som är .H-filen till den valda processor, den innehåller alla registerdefinitioner osv. och den kan man kolla i (ändra dock inget!!!!) efter ANSEL och hur det är definierat.
EDIT: Att det visas raden innan beror på att det kan göra det lättare att hitta i källkoden, man får alltså mer att jämföra med och det är inte sällan att felet kan bero på raden innan, kanske man har glömt ';' eller liknande.
Och anonyma är det väl knappast någon som är, alla har ett nick, javisst, men i detta forum har vi balle nog att stå för vem vi är.
Re: Hur tilldela värden till PIC-filregister i C?
Postat: 30 januari 2009, 17:09:46
av Jens Gunnarsson
Bra!
Stort tack