Na, megírtam a tesztelő programot, tökéletes! Így nézett ki a végére:
Kód: Egész kijelölése
$regfile = "m16def.dat"
$crystal = 8000000
Dim Pixelread As Byte
Dim Px As Byte , Py As Byte
$lib "glcdSBN6400.lib"
Config Graphlcd = 128 * 64sed , Dataport = Portb , Controlport = Portd , Ce = 0 , Ce2 = 1 , Cd = 4 , Rd = 3 , Reset = 2 , Enable = 5
Cls
Setfont Font8x8
Declare Sub Spixelread()
Dim Ciklus As Byte , Hiba As Byte
Cls
Pset 5 , 5 , 1
Hiba = 0
For Px = 0 To 127
For Py = 8 To 63
Call Spixelread()
If Pixelread > 0 Then
Incr Hiba
End If
Next Py
Next Px
If Hiba = 0 Then
Lcdat 8 , 1 , "Rendben!"
Else
Lcdat 8 , 1 , "HIBA!!!!"
End If
Pset 5 , 5 , 0
Pset 5 , 5 , 1
For Px = 0 To 7
For Py = 0 To 7
Call Spixelread()
If Pixelread > 0 Then
Lcdat 1 , 9 , " "
Lcdat 1 , 9 , Pixelread
Lcdat 1 , 49 , Px
Lcdat 1 , 89 , Py
Wait 5
End If
Next Py
Next Px
End ' IDE KELL EZ! Mert ráfut a program a Subra
Sub Spixelread()
$asm
Push r20
Push r21
lds r20,{Px} ' Bascom változó átadása ASM regiszternek
lds r21,{Py}
Push r0
Push r1
Push r2
Push r3
Push r16
Push R25
Push r20
Mov r16,r21 ; row
Ldi R20 , 8 ; 8 Bits In Byte
rcall _Div8 ; r16 contains proper Y/row address now
Mov r0, r24 ; save remainder
Pop r20 ; get X back
Mov r21,r16 ; y data location
mov r2,r20 ; save for later
mov r3,r21
rcall _setcol ; use the code from locate Távoli Rutin hívás
rcall _gread_data ; return data in r1
rcall _gread_data ; return data in r1 DO NOT REMOVE !!!
sts {Pixelread},r1 ; Elmentjük a beolvasot Pixelt
Pop r25
Pop r16
Pop r3
Pop r2
Pop r1
Pop r0
Pop r21
Pop r20
$end Asm
End Sub
$include "font8x8.font"
Amint azt gondoltam, valóban byte-ot ad vissza - 5,0 -tól az 5,7 -ig a visszaadott érték 32 volt (ha pl. 4,4 -et PSET-eltem volna, akkor 16 lett volna, 0,0-nál 1, stb.), minden másra 0 volt a Pixelread értéke!
Most már csak a maszkolás van hátra - kiszámolom, a kígyófej az adott byte melyik bitjét találná el és ha az a bit 1, akkor jöhetnek a további vizsgálatok!
Nagyon köszönöm még egyszer a segítséged és a rám áldozott időd!!!!