Nybörjar problem med pic16f627 på k8048

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Enda nackdelen är väll att det vart väldigt lång kod då jag tänder lysdioderna en för en.

Men varför gör du det då ?
Ett tidigare inlägg visade ju hur du kommer runt det "problemet"...
Cryptomaster
Inlägg: 593
Blev medlem: 17 december 2005, 02:23:20
Skype: crypto-master
Ort: Nyköping

Inlägg av Cryptomaster »

Jag får inte det att funka.
Skriver jag:

Kod: Markera allt

PORTB = 0b00111111  'Tänder portb 
Då får jag fel vid kompileringen.

Men skriver jag:

Kod: Markera allt

PORTB = 1  'Tänder portb 
Då funkar kompileringen men bara 1 diod tänds.
mullemeck
Inlägg: 1306
Blev medlem: 27 maj 2003, 23:52:06
Ort: Lund
Kontakt:

Inlägg av mullemeck »

skumt, PORTB = 0b00111111 borde funka..
Skriv PORTB = 63 istället så ska alla tändas.
Cryptomaster
Inlägg: 593
Blev medlem: 17 december 2005, 02:23:20
Skype: crypto-master
Ort: Nyköping

Inlägg av Cryptomaster »

Skrev PORTB = 63
Tyvärr så tänds bara en (1) diod. :oops:
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Skriver jag:
> code: PORTB = 0b00111111 'Tänder portb
> Då får jag fel vid kompileringen.

Vadå "fel" ???
Säger den ingenting mer ?
Ger den inget fel i klartext eller någon felkod ??
Cryptomaster
Inlägg: 593
Blev medlem: 17 december 2005, 02:23:20
Skype: crypto-master
Ort: Nyköping

Inlägg av Cryptomaster »

Den säger:
ERROR Line 29: Syntax error.
mullemeck
Inlägg: 1306
Blev medlem: 27 maj 2003, 23:52:06
Ort: Lund
Kontakt:

Inlägg av mullemeck »

hehe nu kom jag på felet.. det ska va PORTB = %00111111 det är i c man använder 0b för decimala tal..

dock så borde det funkat att köra PORTB = 63

har du satt alla pinnar till utgångar?

Testa lägg till TRISB = 0 innan du börjar sätta PORTB..
Cryptomaster
Inlägg: 593
Blev medlem: 17 december 2005, 02:23:20
Skype: crypto-master
Ort: Nyköping

Inlägg av Cryptomaster »

Ok, har inte kunnat svara på länge pga av mycket att göra under jul och nyår. Och så har jag varit bortrest ett tag också.
Först av allt så vill jag tacka er alla för hjälpen. Nu funkar det problemfritt.
Koden vart då så här:
Det är då morseloop: som är den omtalade.

Kod: Markera allt

define osc 4
CMCON = 7
input PORTA.0 
INPUT PORTA.1
INPUT PORTA.2



SW1     VAR     PORTA.0
SW2     VAR     PORTA.1
SW3     VAR     PORTA.2

main:
   IF SW1 THEN morseloop
   IF SW2 THEN blinkningar
   if sw3 then fade
   GoTo main
   
fade:
led VAR portb.0
steps VAR WORD
cycles CON 2

up:
For steps=0 TO 255
PWM led,steps,cycles
Next
High led

Pause 200
low led
pause 200
high led

down:
For steps=255 TO 1 STEP -1
PWM led,steps,cycles
Next
Low led

Pause 2500


GoTo fade

morseloop:
    TRISB = 0 
    Pause 1000
    PORTB = %00111111  'Tänder portb
   PAUSE 300
    PORTB = 0    'släcker hela portb 
   PAUSE 300
    PORTB = %00111111  'Tänder portb
   PAUSE 300
    PORTB = 0    'släcker hela portb 
   PAUSE 300
    PORTB = %00111111  'Tänder portb
   PAUSE 300
    PORTB = 0    'släcker hela portb 
   Pause 800
    PORTB = %00111111  'Tänder portb
   PAUSE 900
    PORTB = 0    'släcker hela portb 
   PAUSE 900
    PORTB = %00111111  'Tänder portb
   PAUSE 900
    PORTB = 0    'släcker hela portb 
   PAUSE 900
    PORTB = %00111111  'Tänder portb
   PAUSE 800
    PORTB = 0    'släcker hela portb 
   Pause 300
    PORTB = %00111111  'Tänder portb
   PAUSE 300
    PORTB = 0    'släcker hela portb 
   PAUSE 300
    PORTB = %00111111  'Tänder portb
   PAUSE 300
    PORTB = 0    'släcker hela portb 
   PAUSE 300
    PORTB = %00111111  'Tänder portb
   PAUSE 300
    PORTB = 0    'släcker hela portb 
   Pause 2000       'Väntar 2 s
   GoTo morseloop   'Loopar
   
blinkningar:
    High PORTB.0   'Tänder lysdiod 1  
    PAUSE 40      'Väntar 0,040 s 
    LOW PORTB.0    'Släcker lysdiod 1
    HIGH PORTB.5   'Tänder lysdiod 6
    PAUSE 40      'Väntar 0,040 s
    LOW PORTB.5    'Släcker lysdiod 6
    HIGH PORTB.3
    PAUSE 40
    LOW PORTB.3
    HIGH PORTB.1
    PAUSE 40
    LOW PORTB.1
    HIGH PORTB.4
    PAUSE 40
    LOW PORTB.4
    HIGH PORTB.2
    PAUSE 40
    LOW PORTB.2
    GOTO blinkningar 'Loopar stycket med blinkningar
Som ni kanske ser så har jag experimenterat lite med pwm och fått det att funka problemfritt på 1st lysdiod. Men jag skulle vilja få det som ett rinnande ljus effekt.
1.Fadea lysdiod 1 på portb.0
2.Fadea lysdiod 2 på portb.1
3.Fadea lysdiod 3 på portb.2....
osv ända upp till lysdiod nr 6.
Jag har funderat lite på om man kunde få en FOR-NEXT sats att ändra siffran i variabeln:
LED VAR PORTB.0

Tacksam för svar :)
Användarvisningsbild
Jine
Inlägg: 1795
Blev medlem: 21 juli 2004, 20:25:56
Skype: Jim.Nelin
Ort: Trångsund, Stockholm
Kontakt:

Inlägg av Jine »

Heej Cryptomaster!

Inte visste jag att du hade hittat hit! (Eller va det jag som rekomenderade Elektronikforumet till dig? :lol: )


Nog om det..

Ang koden..

Det går med FOR NEXT osv.. Dock så vet jag inte hur.. jag kom aldrig så långt i min pickariär :P (Blinkande led, Blinkande led i olika hastigheter, Sen byggde ajg en robot :P)
Cryptomaster
Inlägg: 593
Blev medlem: 17 december 2005, 02:23:20
Skype: crypto-master
Ort: Nyköping

Inlägg av Cryptomaster »

Hehe jo jag har vart och smygtittat lite då och då här i några år, men jag vart inte medlem förens, hmm det var några månader sedan tror jag.

Och jo det borde ju gå att få ihop det med FOR-NEXT.

Liksom få en for next sats att ändra siffran i PORTB.0 till PORTB.1 Och sedan nästa gång den körst till PORTB.2 osv...
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Vad menar du med "siffran i PORTB.0" ?
PORTB.0 kan bara vara logiskt hög ("1") eller låg ("0"), är det det du menar ?

Eller är det själva pin-numret som skall ändras ? Alltså "0", "1", "2" o.s.v ?

Det kan vara lite svårt, eftersom pin-numret inte är variabelt i instruktionerna.
Cryptomaster
Inlägg: 593
Blev medlem: 17 december 2005, 02:23:20
Skype: crypto-master
Ort: Nyköping

Inlägg av Cryptomaster »

Ok, jo det är pin numret som jag var ute efter att ändra.
Men ett alternativ är ju att skriva hela stycken med pwm och ändra PORTB.0 i varje, men det skulle alltså bli väldigt mycket kod.
En sån här för varje kod:

Kod: Markera allt

fade:
led VAR portb.0
steps VAR WORD
cycles CON 2

up:
For steps=0 TO 255
PWM led,steps,cycles
Next
High led

Pause 200
low led
pause 200
high led

down:
For steps=255 TO 1 STEP -1
PWM led,steps,cycles
Next
Low led

Pause 2500


GoTo fade 
Skriv svar