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%)]
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