Input funktioniert nicht

Gast #60246
Lesenswert?
• ▲
▼
Hi Leute, ich habe mein Tastaturproblem reduziert und NUR den INput
getestet. Leider funktioniert das irgentetwas nicht. Egal ob ich am
PortA ein H oder L anlege, PortB verändert sich nicht! Das Programm ist
eigentlich ziemlich simpel:

#include <16f628.h>
#include <inline.h>     // Der verwendete Prozessor


void main()
{
 TRISA=0b00001111;      //RA0-RA3 = Inputs
 TRISB=0b00000000;
 PORTB=0x00;

 while(1)       //Endlosschleife
 {
    PORTB = PORTA;
 }

}

Wo ist denn da der Fehler?? Ich versteh es einfach nicht!

Thx
Gast #60249
Lesenswert?
• ▲
▼
Laut Doku (Page 31) muss in CMCON 0x07 geschrieben werden, damit die
PORTA Pins als I/O funktionieren (und nicht als Komparatoreingänge).

Ebenfalls solltest Du prüfen, ob Dein Compiler tatsächlich automatisch
die Registerbänke umschaltet. Sonst musst Du das vor jedem Setzen eines
Registers (TRISA, PORTA, CMCON...) von Hand erledigen.

Andreas

PS: Nicht immer neue Threads öffnen!
Gast #60250
Lesenswert?
• ▲
▼
Danke!

CMCON 0x07 funzt! HURRA ;) Jetzt fehlt mir nur noch ein kleiner Tip wie
ich auf das interne ROM zugreiffen kann. Wie kann ich im ROM Variablen
ablegen bzw. lesen oder auch ab einer bestimmten Adresse XX bits
einlesen?!
Gast #60251
Lesenswert?
• ▲
▼
ROM??? (Read Only Memory = Nur Lese Speicher)

Daten kannst du im RAM ablegen (genauer: in den General Purpose
Registern), die Daten sind aber nach abschalten der Spannungversorgung
weg. Oder Du schreibst die Daten ins EEPROM, dann bleiben sie auch nach
Abschalten der Spannungversorgung erhalten.

Wie das alles geht, steht im Datasheet. Daher empfehle ich Dir: Lies'
das Datasheet ersteinmal komplett durch! Auch wenn's mühsam ist.
Kapitel die erstmal nicht in Frage kommen (z.B. USART) kanns Du ja
überspringen. Danach würde ich mir ein paar Beispielprogramme (z.B.
Application Notes von www.microchip.com) ansehen.

Ausserdem kannst Du im Programmspeicher Tabellen anlegen. Allerdings
nur beim Programmieren. Die werden dann mit dem Programm 'gebrannt'.
Sie Dir hierzu mal die Assemblerdirektive 'DT' im Assembler Users
Guide an.

Andreas
Gast #60253
Lesenswert?
• ▲
▼
Sorry, meinte auch das EEPROM. Habe es dank Datenblatt geschafft! Gibt
es irgentwo das Datenblatt vom 16F862 zu kaufen? ich habe keine Lust
mit 160 Seiten am Bildschrim anzugucken oder auszudrucken?!
Gast #60254
Lesenswert?
• ▲
▼
Ich habe früher einige Datasheets in Buchform von meinem damaligen
Distibutor Future Elektronics bekommen. Das funkioniert aber nur,
solange die davon ausgehen, dass irgendwann grössere Mengen
(>1000/Jahr) abgenommen werden.

Ich drucke die Sheets heute auch selbst aus. Dazu empfehle ich das
Druck-Tool FinePrint. Mit dem kann man mehrere Seiten auf einem A4
Blatt drucken. Ausserdem braucht man ja nur die Kapitel zu drucken, die
einen im Moment interessieren.

Andreas

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.