beste co'ers
ik heb een probleem met het programma voor mijn ledkubus. Het is een ledkubus van 3x3x3(je moet toch ergens beginnen) Met voor elke verdieping 1 min en 9 plussen. En op elke verdieping een voorschakel weerstand. Nu heb ik dit (totaal) oneficiente programma.


DEVICE 16F628A  ;device 16f628a
    CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF    ;config
    ALL_DIGITAL TRUE    
    XTAL 20
DIM a AS BYTE ;variabelen definiëren
DIM b AS BYTE   
DIM c AS BYTE
DIM pa AS BYTE
DIM pb AS BYTE
CLEAR ;variabelen leegmaken
TRISA = 0 ;port a en b  als output
TRISB = 0
begin: ;begin label
FOR c =  200 TO 1 STEP -5 ;for loop die van 200 tot 1 telt met een step van -5
    FOR a = 0 TO 2 ;for loop om tussen de drie verdiepingen te schakelen
        SETBIT pb,  7 ; de drie verdiepingen hoog maken
        SETBIT pb,  6
        SETBIT pb,  5
        CLEARBIT pb, a + 5 ;de huidige verdieping laag maken
     
        FOR b = 0 TO 8 ; for loop om tussen de ledjes te schakelen
            SELECT b
                CASE 4: SETBIT pb, 1 ;a4 en a5 werken niet op mijn pic weet ook niet hoe dat kan
                CASE 5: SETBIT pb, 2
                CASE 6: SETBIT pb, 3 ;poorten waar kristal zit verplaatsen naar andere poort
                CASE 7: SETBIT pb, 4
                CASE <8: SETBIT pa, b ;port a
                CASE 8: SETBIT pb, 0  ;port b
            END SELECT
            PORTA = pa ;veranderingen op de poorten zetten
            PORTB = pb
            pa = 0 ;pa weer op nul zetten(alles uit)
            CLEARBIT pb, 0  ;ledjes op port b weer laag maken(uit)
            CLEARBIT pb, 1
            CLEARBIT pb, 2
            CLEARBIT pb, 3
            CLEARBIT pb, 4
            DELAYMS c  ;wachten
        NEXT b
    NEXT a
NEXT c
GOTO begin ;als hij klaar is weer opnieuw beginnen

Hij loopt mooi door de hele kubus heen, maar niet steeds sneller. Toen ik een kleine wijziging had(de for c loop en de delayms weg) had, ging de hele kubus wel aan maar vrij zwak. Hoe kan ik in picbasic een efficiënter programma maken?

Begin eens met inspringen van de code, nu is je programma onleesbaar.

[Bericht gewijzigd door Henry S. op (12%)]

Ik wist dat ik nog iets vergeten was ;)
Commentaar invoegen posten..., oja inspringen.

CASE 4: SETBIT pb, 1 ;a4 en a5 werken niet op mijn pic weet ook niet hoe dat kan

Datasheet lezen kan helpen ;)

Ten tweede begin je met een delay van 200ms die vervolgens steeds kleiner wordt, dat kan je oog dan niet meer volgen.
Maak de delay groter.
a,b,c etc zijn niet heel handige variabele namen, die moeten voor zich spreken.

[Bericht gewijzigd door Henry S. op (17%)]

Dat is ook de bedoeling ;)

Hij begint 1 voor een en dan gaat langzaam de hele kubus aan.
Er gebeurt trouwens wel iets met de snelheid, maar de kubus gaat niet helemaal aan of kan je 5ms nog zien? Mag je eigenlijk bij step zeggen: -c*0,5. Nee dat kan niet, compiler geeft fout. Maar hoe kan ik dit wel doen?
* pientertje is datasheet aan het lezen

/edit

ahaaa

RA4/T0CKI/CMP2 RA4 ST OD Bi-directional I/O port. Output is open drain type.
RA5/MCLR/VPP RA5 ST — Input port