PIC18F452- Anfänger

OP #2255459
Lesenswert?

Hallo Leute,

da ich heut zum ersten Mal einen µC programmieren möchte, benötige ich 
eure Unterstützung..
Bei der Aufgabe soll ein C Programm etwicklet werden, welches:
1:Zuerst den Schalter S2 (RA4)im Polling Verfahren abfragt.
2:Wird der Schalter betätigt, soll der 10- Bit A/D-Wandler gestartet 
werden und die obersten 4 Bit des Wandlungsergebnisses sollen an den 
LED´s RB <3:0> angezeigt werden.
3:Anschließend soll der Ausgang des Summers RC2 invertiert werden und 
eine Zeitschleife soll eine Zeit erzeugen, damit am Summer ein klar Ton 
erzeugt wird.

Gruß

Leon
Angehängte Dateien:
#2255489
Lesenswert?

Du musst deinen PIC Configurieren. Also welche Taktquelle usw.
Du brauchst außerdem eine void main() Funktion. Wenn der PIC gestartet 
wird, fängt er in dieser Funktion an und nach allen 
Variablendeklarationen kannst du dann die init() aufrufen.

latif leon schrieb:
> TRISA=0bFF;

Ich denke mal, das es nicht compilerabhängig ist: Hexadezimalzahlen 
werden 0xFF und nicht 0bFF geschrieben. Du kannst 0b10101010 schreiben, 
dann hast du die Binärzahl.
#2255560
Lesenswert?

latif leon schrieb:
>> Also: Welchen Compiler verwendest du denn?
> # C18-Compiler

http://pic-projekte.de/pic_c.html

Da findest du noch einiges zum C18. Da ist das mit den Zahlenformaten 
und so auch ganz nett beschrieben. Sollte man kennen =)

latif leon schrieb:
> Ich hab einfach so angefangen:
>
> #include "p18f452.h"
> #include "lcd.h"
>
> void init(void);
> unsigned int x=0;
>
> void init()
> {
>
>
> TRISA=0bFF;
> ADCON0=0b85;
> ADCON1=0b0E;
> TRISB=0bF0;
>

while (1)
{
}

> }
>
> war das mal für die Initialisierung schon richtig??

Da gehört eine Endlosschleife hin, ansonsten macht der PIC ständig einen 
Reset (der dir nicht auffällt weil er so schnell ist). Ein µC Programm 
darf nie enden.
#2255614
Lesenswert?

Lehrmann Michael schrieb:
> Da gehört eine Endlosschleife hin, ansonsten macht der PIC ständig einen
> Reset (der dir nicht auffällt weil er so schnell ist). Ein µC Programm
> darf nie enden.

Vergiss nicht, das init in main zu ändern. Also so z.B.:
1
void init(){
2
     //Initialisierung
3
}
4

5
void main(){
6
     // Variablen deklarieren
7
     init();
8
     while(1){
9
          //Programm
10
     }
11
}


Wenn du die Variable in keiner Funktion deklarierst (in deinem Fall 
weder main() noch init() ) sind das globale Variablen, d.h. du kannst 
von jeder Funktion drauf zugreifen. Du kannst dann aber lokalen 
Variablen (innerhalb einer Funktion) nicht den selben Namen geben, 
logischerweise.

Arbeite einfach die tutorials durch, dann läuft das schon.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren