Oliver71
28.06.2006, 18:28
Hallo erstmal.
Ich habe mir vor kurzem den Sprut-Brenner5 gebaut und 2 Pic16f84 besorgt um als eingefleischter Analog-Elektroniker doch endlich mal in die Welt der uC's reinzuschnuppern.
Ein erstes LC-Meter dass ich nur nachgebaut hatte hat auf Anhieb funktioniert.
Jetzt wollte ich mich doch genauer mit der Assemblerprogrammierung auseinandersetzen, und hab mir bei einem Testaufbau mit LCD-Anzeige ( http://www.sprut.de/electronic/pic/programm/lcd.htm ) durch eine übersehene Zinnbrücke auf der Streifenrasterplatine (VDD nach RB7) den RB7-Ausgang gleich an zwei Pic's abgeschossen.
Die Schaltung verwendet RB4-RB7 zur Ansteuerung der LCD-Datenleitungen D4-D7.
Meine Frage: ist es möglich, nur D7 der LCD über RB1 statt RB7 anzusteuern, vor allem, wie sage ich dem Assembler, dass er RB1 und RB7 bei PORTB Abfragen und Ausgaben vertauschen soll?
also in etwa so:
RB4>LCD D4
RB5>LCD D5
RB6>LCD D6
RB1>LCD D7
irgendwie versteh ich zwar bei dem asm File, wie E, RS und RW über PortA angesprochen werden (direkt über die Bits bzw. den in den Constants deklarierten), steige aber nicht durch wo der Code ist dass der Pic die LCD-Datenleitungen ausgerechnet über RB4-RB7 analog D4-D7 anspricht...oder fehlt der einfach weil die Zahlen ja identisch sind?
Hab versucht in allen Befehlen die PortB ansprechen oder auslesen einfach Bit 1 mit Bit 7 zu tauschen, und RB1 ebenfalls als Ausgang gesetzt, aber hat nicht funktioniert, aber das wär wohl auch zu einfach gewesen^^
Die zwei Pics sind definitiv defekt (eben RB7 Ausgang, Eingang ist nicht betroffen, der Rest okay), es läuft trotzdem jedes Programm darauf dass nicht RB 7 als Ausgang braucht, ich seh's deshalb ein bischen als Assembler-Einstieg und Herausforderung an, die defekten Pics doch noch zu nutzen, wenn die Schaltung nicht alle 8 PortB-outputs braucht und ich den RB7 durch einen anderen unbenutzten ersetzen könnte.
Sorry falls die Frage für Profis vielleicht blöd klingt, aber ASSEMBLER ist für mich wirklich Neuland, und wohl gerade weil ich Delphi oder Basic kenne, sehr abstrakt am Anfang...oder ich steh aufm Schlauch.^^
Gruß, Oliver.
Ich habe mir vor kurzem den Sprut-Brenner5 gebaut und 2 Pic16f84 besorgt um als eingefleischter Analog-Elektroniker doch endlich mal in die Welt der uC's reinzuschnuppern.
Ein erstes LC-Meter dass ich nur nachgebaut hatte hat auf Anhieb funktioniert.
Jetzt wollte ich mich doch genauer mit der Assemblerprogrammierung auseinandersetzen, und hab mir bei einem Testaufbau mit LCD-Anzeige ( http://www.sprut.de/electronic/pic/programm/lcd.htm ) durch eine übersehene Zinnbrücke auf der Streifenrasterplatine (VDD nach RB7) den RB7-Ausgang gleich an zwei Pic's abgeschossen.
Die Schaltung verwendet RB4-RB7 zur Ansteuerung der LCD-Datenleitungen D4-D7.
Meine Frage: ist es möglich, nur D7 der LCD über RB1 statt RB7 anzusteuern, vor allem, wie sage ich dem Assembler, dass er RB1 und RB7 bei PORTB Abfragen und Ausgaben vertauschen soll?
also in etwa so:
RB4>LCD D4
RB5>LCD D5
RB6>LCD D6
RB1>LCD D7
irgendwie versteh ich zwar bei dem asm File, wie E, RS und RW über PortA angesprochen werden (direkt über die Bits bzw. den in den Constants deklarierten), steige aber nicht durch wo der Code ist dass der Pic die LCD-Datenleitungen ausgerechnet über RB4-RB7 analog D4-D7 anspricht...oder fehlt der einfach weil die Zahlen ja identisch sind?
Hab versucht in allen Befehlen die PortB ansprechen oder auslesen einfach Bit 1 mit Bit 7 zu tauschen, und RB1 ebenfalls als Ausgang gesetzt, aber hat nicht funktioniert, aber das wär wohl auch zu einfach gewesen^^
Die zwei Pics sind definitiv defekt (eben RB7 Ausgang, Eingang ist nicht betroffen, der Rest okay), es läuft trotzdem jedes Programm darauf dass nicht RB 7 als Ausgang braucht, ich seh's deshalb ein bischen als Assembler-Einstieg und Herausforderung an, die defekten Pics doch noch zu nutzen, wenn die Schaltung nicht alle 8 PortB-outputs braucht und ich den RB7 durch einen anderen unbenutzten ersetzen könnte.
Sorry falls die Frage für Profis vielleicht blöd klingt, aber ASSEMBLER ist für mich wirklich Neuland, und wohl gerade weil ich Delphi oder Basic kenne, sehr abstrakt am Anfang...oder ich steh aufm Schlauch.^^
Gruß, Oliver.