hoe krijg ik dit in 2 bytes iedere bit een schakelaar
'
Device 16F876A ;Gebruik een 16F628A type
Config hs_osc , WDT_OFF, PWRTE_ON, LVP_OFF,
; Hier stond eerst nog een , aan het einde, dat mag niet!set xtal
Xtal = 8 ;Gebruik een kristal van 8, MH;Hserial_Baud = 9600 ;Transmissiesnelheid van de data over de bus
Hserial_SPBRG = 12
Hserial_RCSTA = %10010000 ;Bit7:Enable serial port / Bit4:Continu ontvangen
Hserial_TXSTA = %00100000 ;Bit5:Transmitpin ingeschakeld
ADCON1 = 7
TRISA = %00111111
TRISB = %11111111
TRISC.0 = 1
TRISC.1 = 1Symbol s1 = PORTB.0
Symbol s2 = PORTB.1
Symbol s3 = PORTB.2
Symbol s4 = PORTB.3
Symbol s5 = PORTB.4
Symbol s6 = PORTB.5
Symbol s7 = PORTB.6
Symbol s8 = PORTB.7
Symbol s9 = PORTA.0
Symbol s10 = PORTA.1
Symbol s11 = PORTA.2
Symbol s12 = PORTA.3
Symbol s13 = PORTA.4
Symbol s14 = PORTA.5
Symbol s15 = PORTC.0
Symbol s16 = PORTC.1
Symbol s17 = PORTC.2
DelayMS 3000start:
If s1 = 1 Then
HSerOut [10] ; A rood
ElseIf s1 = 0 Then
HSerOut [11] ; B rood
EndIfIf s2 = 1 Then
HSerOut [12] ; A rood
ElseIf s2 = 0 Then
HSerOut [13] ; B rood
EndIfIf s3 = 1 Then
HSerOut [14] ; A rood
ElseIf s3 = 0 Then
HSerOut [15] ; B rood
EndIfIf s4 = 1 Then
HSerOut [16] ; A rood
ElseIf s4 = 0 Then
HSerOut [17] ; B rood
EndIfIf s5 = 1 Then
HSerOut [18] ; A rood
ElseIf s5 = 0 Then
HSerOut [19] ; B rood
EndIfIf s6 = 1 Then
HSerOut [20] ; A rood
ElseIf s6 = 0 Then
HSerOut [21] ; B rood
EndIfIf s7 = 1 Then
HSerOut [22] ; A rood
ElseIf s7 = 0 Then
HSerOut [23] ; B rood
EndIfIf s8 = 1 Then
HSerOut [24] ; A rood
ElseIf s8 = 0 Then
HSerOut [25] ; B rood
EndIfIf s9 = 1 Then
HSerOut [26] ; A rood
ElseIf s9 = 0 Then
HSerOut [27] ; B rood
EndIfIf s10 = 1 Then
HSerOut [28] ; A rood
ElseIf s10 = 0 Then
HSerOut [29] ; B rood
EndIfIf s11 = 1 Then
HSerOut [30] ; A rood
ElseIf s11 = 0 Then
HSerOut [31] ; B rood
EndIfIf s12 = 1 Then
HSerOut [32] ; A rood
ElseIf s12 = 0 Then
HSerOut [33] ; B rood
EndIfIf s13 = 1 Then
HSerOut [34] ; A rood
ElseIf s13 = 0 Then
HSerOut [35] ; B rood
EndIfIf s14 = 1 Then
HSerOut [36] ; A rood
ElseIf s14 = 0 Then
HSerOut [37] ; B rood
EndIfIf s15 = 1 Then
HSerOut [38] ; A rood
ElseIf s15 = 0 Then
HSerOut [39] ; B rood
EndIfIf s16 = 1 Then
HSerOut [40] ; A rood
ElseIf s16 = 0 Then
HSerOut [41] ; B rood
EndIfDelayMS ;145
GoTo start
End
hadv
Just find out what you like and let it kill you
Da's niet zo moeilijk.
Je zet alle 'volgende' tests in een subroutine (voor 'start'). Dus vanaf 'if s1' tot en met 'if s16'.
In je 'main loop' ('start:') komt nu
if s17 = 1 then gosub [de subroutine]
Alleen wat je bedoelt met 'en dan wacht weer tot dat i weer hoog is' snap ik niet helemaal. is 'i' s17?
verder heb je nog steeds overtollige code
constructies als deze
If s1 = 1 Then
HSerOut [10] ; A rood
ElseIf s1 = 0 Then
HSerOut [11] ; B rood
EndIf
kunnen makkelijk worden gereduceerd naar
If s1 = 1 Then
HSerOut [10] ; A rood
Else
HSerOut [11] ; B rood
EndIf
Bij een bit is immers slechts 0 of 1 een geldige waarde.
hoe kan ik het voormekaar krijgen dat ik nu niet 2 bytes versent
voor die 16 srakelaars ,
maar 2 bytes en elke srakelaar aan een bit hang. dan verzent ik ook gelijk minder informatie en het kan sneller
hoe moet ik beginnen ,
kan iemend mijn een voorbeeld codegeven
zo dat ik dezen eens kan bekijken
avast bedankt
[Bericht gewijzigd door ricardo12345 op (89%)]