PIC I/O eingang abfragen ausgang schalten

Gast #3245148
habe zum ersten Mal mit PIC-Controllern zu tun. Hier meine Frage: Wie
liest man einen Eingang ein? Ich möchte z.B. RA0 einlesen und RB0 
schalten. Aber es funktuniert nicht.

Hier mein code:
1
#include "pic.h"
2

3
void main()
4
{
5
TRISA = 0x01;
6
TRISB = 0x00;
7

8
while(1){
9

10
if(PORTAbits.RA0){
11
PORTBbits.RB0 = 1;
12
}
13
else {PORTBbits.RB0 = 0;}
14
}
15
}
Gast
Läuft der PIC +überhaupt?
Sind die config-bits richtig gesetzt?
Ist der PIC richtig programmiert?
Wie ist der Taster angeschlossen (pullup/pulldown)?
Was ist es für ein PIC? Bei PIC18F schreibt man in LATx und liest in 
PORTx
Hallo,

Es wäre interessant zu wissen, welcher Compiler verwendet wird und 
welche Konfiguration vorgenommen wurde.

Der Grund dafür ist, dass es sein kann, dass der Compiler (HTC,CCS oder 
XC8) einen Default-Wert übergibt, wodurch der PIC nicht laufen kann.

Weiterhin wäre interessant, wie dein Aufbau/deine Simulation aussieht. 
Ist beispielsweise eine externe Taktquelle nicht angeschlossen, aber der 
Compiler glaubt, dass dieser vorhanden ist, so wird der PIC nicht 
laufen(Fehler von Mir war einmal, dass der Quarz angeschlossen war, aber 
GND der Quarz-Kondensatoren fehlte, lief dann auch nicht). Auch fehlende 
Versorgung kann dann als Ursache ausgeschlossen werden.
<multisim> kenne ich nicht.
Aber auf dem MPLAB Simulator und auf dem SourceBoost-C Simulator tut das 
Programm was es soll(te).
Beim prähistorischen F84 gibt es ohnehin kaum was zu konfigurieren, 
keine Analogfunktionen, wenn ich mich recht erinnere nicht mal einen 
internen Oscillator....
Also würde ich mir mal <multisim> und dessen Einstellungen vornehmen
Gast
Chris B. schrieb:
> SourceBoost-C

wenn ich RA0 in ausgabemodus schalte, dann tut das programm was es soll. 
Das ist aber theoretisch nicht richtig oder?

code:
#include "pic.h"

void main()
{
TRISA = 0x00;
TRISB = 0x00;

while(1){

if(PORTAbits.RA0){
PORTBbits.RB0 = 1;
}
else {PORTBbits.RB0 = 0;}
}
}
Angehängte Dateien:
Hallo,

Bei Dir fehlt die Taktquelle. Diese kann entweder ein RC-Glied, ein 
Quart/Resonator oder ein Taktgenerator sein. Die angeschlossene 
Taktquelle muss als Konfigurationswort im Programm eingetragen werden.

Des weiteren muss der Pin zur Abfrage (wegen dem Taster/Schalter) als 
Eingang definiert werden und einen PullUP oder PullDOWN besitzen.
Gast
bingoo schrieb:
> Warum nimmst Du denn den Steinzeit-PIC 16F84???

Weil der offenbar im Multisimulator grad drin ist. Es gibt hier wohl 
noch keine reale Hardware: "ich habe mit multisim simuliert aber noch 
nicht programmiert"

OK?

W.S.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.