BANKSEL,ANSELH
Mittwoch, 23. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  Programmiersprache Assembler  |  BANKSEL,ANSELH « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: BANKSEL,ANSELH  (Gelesen 2969 mal)
 
puschel
Jr. Member
**
Offline Offline

Beiträge: 55


Profil anzeigen
« am: April 05, 2011, 13:37:20 »

Moin,

habe eine Frage bezüglich folgenden Programmcodes:

start: ; Konfiguriere Port B und C ( hier wird dem Assembler gesagt, ob ich digitale oder analoge Eingänge habe)

BANKSEL   ANSELH       ; ( BANKSEL ist ein "Pseudobefehl". Dieser springt direkt zu der Speicherbank, in dem sich ANSELH befindet.)
CLRF   ANSELH       ; ( ANSELH wird gelöscht, was bewirkt, dass wird digitale Eingänge haben.)
BANKSEL   PORTA       ;

clrf   PORTB
clrf   PORTC

Habe zu dem Code schon kleine Anmerkungen in Klammern geschrieben ( Ist für meine Klasse, die dem Unterricht überhaupt nicht folgen kann)
Was ich nun aber nicht verstehe, sind die folgenden 3 Zeilen.
Also bei BANKSEL PORTA verweisst er auf die Speicherbank PORTA ?!?
und die nächsten beiden löschen PORTB und C, aber wieso das ?
Dies ist eine Standartkonfiguration, die unsere Lehrerin uns gegeben hat.
Kann sie leider selbst nichtma erklären. :-(
Was ich in diesem Zusammenhang noch weniger verstehe, ist folgendes:

           bsf   STATUS,RP0  ;
      movlw   B'00000000' ;
      movwf   TRISD       ;
      movlw   B'11111111' ;
      movwf   TRISB       ;

Hier definiere ich Ein bzw. Ausgänge, ist soweit klar. Nunja B ist Eingang usw.
Mich wundert nun, wieso ich oben, in der analog/digital Geschichte PORTA,B und C stehen habe und hier noch PORTD. ^^ Ich sage doch, dass PORTD Ausgang bzw. PORTB Eingang ist.
Unsere Lehrerin meinte nur:" Ja das mit dem analog/digital kann weg, brauchen wir nicht.
Das sehe ich auch ein, aber wenn ich schon leicht verwiirt bin, wie sollen es dann die anderen aus der Klasse verstehen, die sowas einfach "serviert" bekommen.

Ich hoffe, ihr konntet mir folgen.
Gespeichert
Stampede
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 969



Profil anzeigen WWW
« Antworten #1 am: April 06, 2011, 03:22:40 »

Hi,

Erstmal vorneweg, welcher PIC?

Code:
BANKSEL   ANSELH       ; ( BANKSEL ist ein "Pseudobefehl". Dieser springt direkt zu der Speicherbank, in dem sich ANSELH befindet.)
Soweit richtig.
Code:
CLRF   ANSELH       ; ( ANSELH wird gelöscht, was bewirkt, dass wird digitale Eingänge haben.)
Nein, ANSEL aktivier/deaktiviert nur die digitalen input Treiber, TRIS die output driver. Nur wenn die gemeinsam fuer einen Pin eingeschaltet sind, lassen die sich als analoger Eingang nutzen.
In deinem Falle werden also hier nur die digitalen Eingangstreiber eingeschaltet.

Code:
BANKSEL   PORTA       ;
clrf   PORTB
clrf   PORTC
Zitat
Also bei BANKSEL PORTA verweisst er auf die Speicherbank PORTA ?!?
und die nächsten beiden löschen PORTB und C, aber wieso das ?
Schau dir mal die Special Function Register Memory Map an. Da wirst du feststellen, dass alle PORT Register zusammen mit den LAT Registern in einer Bank liegen. Daher ist es ausreichend, banksel PORTA zu schreiben. Man koennte auch jedes andere Register in Bank 0 benutzen.
Zitat
Dies ist eine Standartkonfiguration, die unsere Lehrerin uns gegeben hat.
Kann sie leider selbst nichtma erklären. :-(
Das ist allerdings traurig, weil das die absoluten Basics sind. Wie soll die dann euch was erklaeren? Ich wuerde sie mal mit "read the fucking datasheet" ansprechen Smiley

Code:
          bsf   STATUS,RP0  ;
      movlw   B'00000000' ;
      movwf   TRISD       ;
      movlw   B'11111111' ;
      movwf   TRISB       ;
Zitat
Mich wundert nun, wieso ich oben, in der analog/digital Geschichte PORTA,B und C stehen habe und hier noch PORTD. ^^ Ich sage doch, dass PORTD Ausgang bzw. PORTB Eingang ist.
PortB ist Eingang, PortD Ausgang, STATUS,RP0 schaltet auf die Bank mit den TRIS Registern.
Zitat
Unsere Lehrerin meinte nur:" Ja das mit dem analog/digital kann weg, brauchen wir nicht.
Das clrf PORTB/C macht dann natuerlich keinen Sinn, da die Ausgangstreiber deaktiviert sind (explizit bei PortB, implizit bei PortC, denn der PIC startet mit allen Pins als Eingang). Fuer Port A gilt prinzipiell das selbe. Nur sollte man die unbeschaltet Pins entweder auf ein Potential ziehen (pull up) oder als Ausgang definieren.

Zitat
Ich hoffe, ihr konntet mir folgen.
So halbwegs.

Gruss,
Stefan
Gespeichert

Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.034 Sekunden mit 17 Zugriffen.
 
Top! Top!