Input problem Pic - Löst

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Nicke.orebro
Inlägg: 39
Blev medlem: 29 februari 2008, 11:42:49
Ort: Örebro
Kontakt:

Input problem Pic - Löst

Inlägg av Nicke.orebro »

Hej.

Helt ny på Pic-programmering.
Programmet är tänkt att blinka en lysdiod på portC, efter att portB.5 fått en +5v signal.
Blink-delen fungerar bra, men det är själva kollen på om portB.5 blivit "hög" som inte verkar fungera. Någon vänlig själ som kan tillrättavisa mig?

Pic 16F690 är det jag använder mig av.

Kod: Markera allt

#include <p16F690.inc>
    __config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)

    cblock 0x20
Delay1                   ; Define two file registers for the
Delay2                   ; delay loop
     endc
      
     org 0
Start:
     bsf       STATUS,RP0          ; select Register Page 1
     bcf       TRISC,0             ; make IO Pin C.0 an output
	 bsf	   TRISB,5				;make IO Pin B.5 an input
     bcf       STATUS,RP0          ; back to Register Page 0

Wfportb:
	 BTFSS     PORTB,5				;Vänta på att port B.5 blir hög
     Goto Wfportb
     

MainLoop:
     bsf       PORTC,0             ; turn on LED C0
OndelayLoop:
     decfsz    Delay1,f            ; Waste time.  
     goto      OndelayLoop         ; The Inner loop takes 3 instructions per loop * 256 loopss = 768 instructions
     decfsz    Delay2,f            ; The outer loop takes and additional 3 instructions per lap * 256 loops
     goto      OndelayLoop         ; (768+3) * 256 = 197376 instructions / 1M instructions per second = 0.197 sec.
                                   ; call it a two-tenths of a second.
      
     bcf       PORTC,0             ; Turn off LED C0
OffDelayLoop:
     decfsz    Delay1,f            ; same delay as above
     goto      OffDelayLoop
     decfsz    Delay2,f
     goto      OffDelayLoop
     goto      MainLoop            ; Do it again...
     end
/Nicklas
Senast redigerad av Nicke.orebro 9 augusti 2008, 13:53:14, redigerad totalt 1 gång.
Användarvisningsbild
marcla
Inlägg: 311
Blev medlem: 19 juli 2006, 11:36:38
Ort: Gislaved

Inlägg av marcla »

Menar du att ditt program inte kontrolerar om Portc.5 blir låg när blink
processen startas? i sånna fall så ser det
ut som om programet fanstnar i "Mainloop" Ersätt "Goto Mainloop" i
slutet av ditt program med "Goto Wfportb"
Nicke.orebro
Inlägg: 39
Blev medlem: 29 februari 2008, 11:42:49
Ort: Örebro
Kontakt:

Inlägg av Nicke.orebro »

Nja..

Det är snarare i

Kod: Markera allt

Wfportb:
	 BTFSS     PORTB,5	 ;Vänta på att port B.5 blir hög
     Goto Wfportb
som det hänger sig, kommer aldrig vidare.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Det ser ut att vara det mycket vanliga felet att slarva med
att kolla databladet. Det är *mycket* tydligt angivet där.

Om inte en viss del fungerar som det är tänkt, t.ex PORTB,
så kollar man *en gång till* det kapitel som handlar om t.ex PORTB.

Se sidan 69, Det gråa rutan med "Note:" i fet stil direkt
under "Example 4-3".

Kolla även om ANSEL på sidan 61...
Nicke.orebro
Inlägg: 39
Blev medlem: 29 februari 2008, 11:42:49
Ort: Örebro
Kontakt:

Inlägg av Nicke.orebro »

Tack så mycket.

Det var initiering jag hade missat...

Nu blinkar det så fint =)

/nicklas
Skriv svar