Ich kann nur raten, Standard ist das nicht.
TRISB ist in der Bank1 . vielleicht ist der Assembler ein ganz Gescheiter
und denkt sich da was dabei. Keine Doku da ?
Hallo
Ich habe vor 3 Tagen PICs kennengelernt, habe mir das Board K8048 besorgt und schon einige kleine Programme geschrieben (hatte vor 15 Jahren mal ein wenig Assembler gelernt). Diese konnte ich auch erfolgreich 'brennen' und laufen lassen.
Zu meiner komischen Frage - was bedeutet die folgende Syntax, insbesondere das Zeichen '^':
bcf TRISB ^ 0x080, 1 ; Enable RB1 for Output
Kann ich das auch anders schreiben?
Ich benutze die gputils mit gpsim und PikDev, PIC ist 16F627
--
Danke für jegliche Hilfe!
Sami
Ich kann nur raten, Standard ist das nicht.
TRISB ist in der Bank1 . vielleicht ist der Assembler ein ganz Gescheiter
und denkt sich da was dabei. Keine Doku da ?
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Also die richtige Syntax dafür ist eigentlich:
wobei TRISB durch ein beliebiges Register ausgetauscht werden kann (z.B. PORTB, PORTA, TRISA,...) und die "0" gibt das Bit an, welches Gesetzt werden soll.Code:bcf TRISB,1
Das hab ich noch nie gesehen, noch nichtmal bei Beispiel-Codes von Microchip!! *g*Code:bcf TRISB ^ 0x080, 1 ; Enable RB1 for Output
Allerdings würde es mich mal interresieren ob das bei dir funktioniert.
Ach nochwas der Befehl alleine "Enabled" nicht RB1 als Ausgang, wenn du nicht vorher die richtige Bank für TRISB ausgewählt hast....
Gruß
Stefan
Der code läuft, macht was ich will. Hier ist das gesamt code segement:
bsf STATUS, RP0 ; switch to bank1
bcf TRISB ^ 0x80, 0 ; set on port B pin 0 as output
bcf STATUS, RP0 ; switch back to bank0
movlw b'00000001' ;set bit 0 high in work reg
movwf PORTB ; move work reg to PORTB
Wie kann ich das denn noch schreiben, d.h. ohne das Zeichen '^'
--
Vielen Dank für die Hilfe.
Gruss
Sami
Wenn ich es folgendermassen schreibe dann bekomme ich eine Fehlermeldung:
bsf STATUS, RP0
bcf TRISB,1
bcf STATUS, RP0
movlw b'00000000'
movwf PORTB
Fehlermeldung ist:
template.asm:93:Message [302] Register in operand not in bank 0. Ensure bank bits are correct.
--
Danke für jegliche Hilfe.
Sami
Muss das nicht heißen:
bsf STATUS, RP0 ; auf Bank 1 umschalten
movlw B'00000000' ; PortB alle output
movwf TRISB
bcf STATUS, RP0 ; auf Bank 0 schalten
Hab ich von sprut.de
jepp, ist keine Fehlermeldung, sondern nur eine Warnung. Funktionieren tut es normalerweise schon.
Ich glaub wenn du folgendes in den Quellcode eingibst müsste die Meldung unterdrückt werden.
keine Ahnung warum der Assembler die Meldung immerwieder ausspuckt, obwohl es eigentlich stimmt. Macht er bei mir auch.Code:ERRORLEVEL -302 ;SUPPRESS BANK SELECTION MESSAGES
Naja...
Viel Spaß beim noch beim rumspielen!
Gruß
Stefan
ach nochwas.....das von Sprut stimmt eigentlich fast immer...*ggg*
Das ist eigentlich Ok, eine bessere und "schnellere" möglichkeit wäre noch diese:bsf STATUS, RP0 ; auf Bank 1 umschalten
movlw B'00000000' ; PortB alle output
movwf TRISB
bcf STATUS, RP0 ; auf Bank 0 schalten
Code:bsf STATUS, RP0 ; auf Bank 1 umschalten clrf TRISB bcf STATUS, RP0 ; auf Bank 0 schalten
Korrket, es ist eine Warnung, alles läuft normal und wenn ich
ERRORLEVEL -302 ;SUPPRESS BANK SELECTION MESSAGES
eingebe, dann erscheint auch die warning message nicht mehr.
Es ist einfach nicht schön, wenn eine warning kommt und diese nicht stimmt od einfach ignoriert werden kann.
Mhh wenn man das mit dem ^ Zeichen macht, dann kommt eben keine warning...evt ist das der Sinn!
Uebrigens es muss TRISB,0 heissen.
--
Vielen Dank für die rasche Aufklärung der Situation - echt super!!
Sami
TRISB,0 --> RB0 output
TRISB,1 --> RB1 output
TRISB,2 --> RB2 output
....
TRISB,7 --> RB7 output
Ich weis auch nicht warum die meldung kommt und warum Microchip noch nicht dafür gesorgt hat, dass die Meldung nicht mehr kommt.
Schau dir mal das Disassembling an. Ob da vielleicht etwas anders bei dem ^ als bei nur dem TRISB.....wäre vielleicht zur aufklärung interresant. *g*
Gruß
Stefan
Lesezeichen