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
Abfrage von Eingangsstaus ist PINx, nicht PORTx müsste also "PORTB = PINA;" oder so ähnlich sein (kenn C nicht besonders) Bernd
Hmm.. Ich habe gerade etwas über das CMCON gelesen. Leider bin ich echt unerfahren mit uC's. Was steht das dirn in dem Register? Hab ich vielleicht da etwas vergessen zu konfigurieren??
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!
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?!
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
...ich hab' ganz vergessen, dass Du ja in C programmierst: int tmpVar; tmpVar = 100; und schon ist '100' im RAM gespeichert. Andreas
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?!
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.