PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Pin - Eingang, Ausgang definieren ???



pitt
16.10.2005, 15:39
hi,

also ich hab den pic 18f452 und hab eine taste am rb0 und noch eine am rb1.
jetzt will ich dass rb0 eingang ist und alle anderen ausgänge.

aber des klappt irgendwie nicht, weil die zweite taste die an rb1 hängt, welcher eigentlich als ausgang eingestellt ist, trotzdem noch am lcd ausgegeben wird.
wieso ist des so.

ich frag zwar beide tasten immer ab, aber es soll nur die erste am lcd ausgegeben werden, wenn ich nur rb0 als eingang einstell.

was mach ich falsch??


code
movlw B'00000001'
movwf TRISB

PicNick
16.10.2005, 16:08
Wie fragst du "beide" Tasten ab, wenn nur eine als Input gilt ?
Der code ist zwar sehr übersichtlich, ich nehm aber an, daß er nicht ganz vollständig ist.

stowoda
16.10.2005, 16:08
Moin!

Ich verstehe Dein Anligen nicht ganz..
Was hast Du denn vor? Wieso fragst Du rb1 denn überhaupt ab?
Zeig uns doch mehr von Deinem Code!
Je mehr wir wissen desto schneller können wir helfen.

Gruß
lk

Pitt1986
16.10.2005, 22:27
hi,

also warum ich das hier frage ist, weil ich mir denk warum muss ich immer die ein- und ausgänge definieren wenn ich ein pin der als ausgang definiert ist trotzdem abfragen kann.

sicher logisch ist es eigentlich nicht dass man ein pin als ausgang definiert und dann abfragt, aber ich habe nur eine taste an rb0 angeschlossen gehabt und jetzt habe ich noch ne zweite taste an den rb1 hingelötet und hab ne neue routine im programm integriert die die zweite taste abfragt, hab aber vergessen den rb1 mit der neuen taste als eingang zu definieren.
läuft alles so wie es soll nur frag ich mich wieso dann das mit dem definieren der pins.
vor allem wenn man z.b. an einem einigen pins ein lcd hat und zugleich tasten also das programm die ganze zeit umschaltet zwischen ein- und ausgängen.
könnte man doch eigentlich dann weglassen.

der quellcode ist jetzt eigentlich überflüssig, aber hier ist er trozdem

list p=18f452
#include <P18f452.INC>


__config _CONFIG2L, _PWRT_ON_2L
__config _CONFIG2H, _WDT_OFF_2H
__config _CONFIG1H, _HS_OSC_1H



movlw B'00000000'
movwf TRISB
clrf TRISD
clrf PORTB
clrf LATB
clrf PORTD
clrf LATD


main

;taste1 --------------
btfss PORTB,0
movlw D'48'
btfsc PORTB,0
movlw D'49'
movwf cablen1
xorwf cable1,0
btfss STATUS,Z
call savec1

;taste2 --------------
btfss PORTB,1
movlw D'48'
btfsc PORTB,1
movlw D'49'
movwf cablen2
xorwf cable2,0
btfss STATUS,Z
call savec2

goto main
.
.
.
end

stowoda
16.10.2005, 23:33
Nabend!

Ich bin mir immer noch nicht so recht sicher ob ich mir Deine Gedanken richtig verinnerlicht habe.
Du fragst:

also warum ich das hier frage ist, weil ich mir denk warum muss ich immer die ein- und ausgänge definieren wenn ich ein pin der als ausgang definiert ist trotzdem abfragen kann.

Das alles hat seinen Grund und ist von der jeweiligen Architektur des µC abhängig. Wenn Du Dir im Datenblatt des 18F452 ein Blockdiagramm eines Ports anschaust, zb: das des PORTA; im Speziellen der RA3, RA0 und RA5 Pins, wirst Du erkennen was dahinter steckt! Vielleicht nicht auf den ersten Blick und nicht ohne das nötige Hintergrundwissen, aber wenn es Dich wirklich interresiert wirst Du leicht herausfinden können welches Prinzip hinter der "Definition"(i/o) eins Pins steckt.
Du kannst den Pin abfragen egal ob der N oder P Transistor leitet.
Vielleicht solltest Du für den Anfang einen "simpleren" PIC nehmen und Dir die Blockdiagramme der PORTS anschauen, wenn Du wirklich wissen willst wie dieser Teil eines µC konstruiert ist und somit wie er funktioniert.

Gute n8