Jonathan
"Theorie is alleen te rechtvaardigen als 'n vorm van praktijk. De praktijk staat niet terecht voor 't hooggerechtshof van de theorie" (Stephan Toulmin)
kent iemand een algemen software routine om van een decimaal getal ts 0-3000 de twee overeenkomstige bytes te maken
dit kan normaal met 12 bits
ik zou de waarde vaneen slider in VB moeten kunnen omzetten naar twee bytes om deze naar PIC te verzenden
je kan dat door een serie delingen uit te voeren en zo bit per bit bepalen
misschien weet iemand van jullie een betere en snellere methode?
Als je nou eens begint met fatsoenlijk Nederlands in je post te tikken... Dan hoeft men zich niet eerst in te spannen om te lezen wat je nou eigenlijk bedoelt (voordat iemand over je eigenlijke probleem na gaat denken).
Dan voor je vraag:
Je zou je af kunnen vragen of je die resolutie wel nodig hebt. Als je het getal gewoon deelt door 12, zit je in de range 0-250, wat prima in een byte past.
Stel dat je de resolutie echt nodig hebt: DIV is een integer divide (in de meeste talen), terwijl MOD in veel talen de 'rest' retourneert. Zo kun je dus met 2 instructies eea. naar 2 bytes converteren.
Jonathan
"Theorie is alleen te rechtvaardigen als 'n vorm van praktijk. De praktijk staat niet terecht voor 't hooggerechtshof van de theorie" (Stephan Toulmin)
Op 23 februari 2004 20:36:38 schreef Marco69:
Als je nou eens begint met fatsoenlijk Nederlands in je post te tikken... Dan hoeft men zich niet eerst in te spannen om te lezen wat je nou eigenlijk bedoelt (voordat iemand over je eigenlijke probleem na gaat denken).
oeioeioei, zo erg was het nu toch ook niet
wat betreft delen door twaalf dit is nu de bedoeling niet
mijn resolutie is 12 bits (afgerond naar boven 16 bits of 2 bytes)
ik zou mijn waarde van 0 tot 3000 moeten omzetten in twee bytes dus nul = 00000000 00000000
3000 = 00001011 10111000
ik krijg voor 3000 dan een byte (MSB) met waarde 00001011 of (dec)11 en een byte (LSB) met waarde 10111000 of (dec)184
deze twee bytes kan ik met USART verzenden naar mijn PIC 16F877 en dan verder doorsturen via SPI naar een 12bits DAC
het probleem stelt hem dat ik in VB geen routine gevonden heb om een integer om te zetten naar een word (2 bytes)
kwas misschien in mijn eerste post niet zo duidelijk sorry...
Jonathan
"Theorie is alleen te rechtvaardigen als 'n vorm van praktijk. De praktijk staat niet terecht voor 't hooggerechtshof van de theorie" (Stephan Toulmin)
ier een stukje VB code die het doet maar ik vind het wat ingewukkeld voor een simplele conversie
Dim value As Integer
Dim b12, b11, b10, b9 As Integer
Dim result As Integer
Dim hi, lo As Byte
Private Sub Command1_Click()
value = CInt(Text1.Text)
If (value / 2048) >= 1 Then
b12 = 1
result = value Mod 2048
Else
result = value
End If
If (result / 1024) >= 1 Then
b11 = 1
result = result Mod 1024
End If
If (result / 512) >= 1 Then
b10 = 1
result = result Mod 512
End If
If (result / 256) >= 1 Then
b9 = 1
result = result Mod 256
End If
lo = CByte(result)
hi = CByte((b9 * 1) + (b10 * 2) + (b11 * 4) + (b12 * 8))
Label1.Caption = hi
Label2.Caption = lo
b9 = 0
b10 = 0
b11 = 0
b12 = 0
End Sub
Tsja... basic 'programmeurs'... argh...
hi=value DIV 256
lo=value MOD 256
Hoe kort wil je het hebben?
Misschien nog ff wat type casting eromheen; string-to-word conversion, maar dat moet je toch.
[Bericht gewijzigd door Marco69 op ]
Jonathan
"Theorie is alleen te rechtvaardigen als 'n vorm van praktijk. De praktijk staat niet terecht voor 't hooggerechtshof van de theorie" (Stephan Toulmin)
Op 23 februari 2004 23:03:24 schreef Marco69:
Tsja... basic 'programmeurs'... argh...hi=value DIV 256
lo=value MOD 256Hoe kort wil je het hebben?
Misschien nog ff wat type casting eromheen; string-to-word conversion, maar dat moet je toch.
nice kzal da proberen 
iets tegen VB? tis eigelijk het ene die ik een beetje ken
als je het allemaal zelf moet leren...
C++ lukt ook wel maar dan in dos
wat bedoel je met casting? een procedure van maken of zo
dank u zeer ik had er eigenlijk niet op gedacht met een gewone deling en modulus... 