Forum: Mikrocontroller und Digitale Elektronik XORFW funktioniert nicht auf PORTA


von J. A. (teh-jar)


Lesenswert?

Hi, ich habe eine Frage zu den folgenden zwei einfachen Programmen:
1
STATUS equ 03
2
TRISA  equ 85
3
PORTA  equ 05
4
COUNT1 equ 20
5
COUNT2 equ 21
6
7
 bsf   STATUS,5
8
 clrf  TRISA
9
 bcf   STATUS,5
10
 movlw 02
11
 movwf PORTA
12
 clrf  COUNT1
13
 clrf  COUNT2
Hier unterscheiden sich die beiden Programme jetzt:
Programm 1:
1
Start
2
 bsf   PORTA,1
3
 call  Delay
4
 bcf   PORTA,1
5
 bsf   PORTA,2
6
 call  Delay
7
 bcf   PORTA,2
Programm 2:
1
 movlw 06
2
3
Start
4
 call  Delay
5
 xorwf PORTA
Ab hier sind beide Programme wieder gleich:
1
goto  Start
2
3
Delay
4
 decfsz COUNT1
5
 goto   Delay
6
 decfsz COUNT2
7
 goto   Delay
8
 return
9
10
 end

RA1 und RA2 sollten meiner Meinung nach in beiden Fällen abwechselnd 
blinken. Beim zweiten Programm ist das Ergebnis auf meinem PIC16F627 
aber, dass erst RA1 dann RA2 angeht und danach nichts mehr passiert. 
Woran kann das liegen? Wenn ich das XORWF durch ein ANDWF austausche, 
geht RB1 nach dem ersten Delay aus. Bei IORWF tritt der gleiche Zustand 
wie bei XORF ein und bei COMF gehen alle RA an. Es ist, als würde der 
PIC beim Lesen von PORTA nur 0 lesen. Ist dem so? Und, wenn ja, warum?

teh-JaR

von J. A. (teh-jar)


Lesenswert?

Hi noch mal.
Das hier funktioniert ohne Probleme:
1
__config 3D18
2
STATUS equ 03
3
PORTA  equ 05
4
TRISA  equ 85
5
CHANGE equ 20
6
COUNT1 equ 21
7
COUNT2 equ 22
8
9
 bsf    STATUS,5
10
 clrf   TRISA
11
 bcf    STATUS,5
12
 movlw  6
13
 movwf  CHANGE
14
 clrf   COUNT1
15
 clrf   COUNT2
16
 movlw  2
17
 movwf  PORTA
18
19
Begin
20
 call   Delay
21
 xorwf  CHANGE,0
22
 movwf  PORTA
23
 goto   Begin
24
25
Delay
26
 decfsz COUNT1
27
 goto   Delay
28
 decfsz COUNT2
29
 goto   Delay
30
 return
31
32
 end
Ich wüsste trotzdem gerne, woran es liegt, dass von PORTA nicht gelesen 
werden kann, wenn PORTA als Ausgang geschaltet ist und wo ich diese 
Information im Datenblatt finden kann.

teh-JaR

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
Noch kein Account? Hier anmelden.