Hallo
Naar aanleiding van de klok op deze site:http://www.micro-examples.com/public/microex-navig/doc/079-touchclock.… wou ik er ook een maken, in te stellen via een touchscreen. Maar bij het instellen van het uur krijg ik de reeds opgeslagen getallen niet meer te zien. De onderstaande code werkt met "multi-dimensional arrays" en ik denk dat hier een fout in geslopen is. PS de code is nog lang niet af en alles is geschreven in mikrobasic voor een PIC18F452. De touchscreencontroller.

program clock

dim x_coord, y_coord as longint
    x_coord128, y_coord64 as byte
    rond, rond2, rond3, rond4, cnt, cnt2, cnt3, plaats as byte
    opslaanx, opslaany as byte[10][50]
    aantal as byte[10]
    totdat as byte

sub function GetX() as word

  PORTa.2 = 1                                 ' DRIVEA = 1
  PORTa.5 = 0                                 ' DRIVEB = 0
  Delay_ms(5)
  result = ADC_Read(0)                        ' READ-X (BOTTOM)
end sub

sub function GetY() as word

  PORTa.2 = 0                                 ' DRIVEA = 0
  PORTa.5 = 1                                 ' DRIVEB = 1 (BOTTOM drive on)
  Delay_ms(5)
  result = ADC_Read(1)                        ' READ-X (LEFT)
end sub

sub procedure tekenblokjes
    glcd_dot(x_coord128+1,y_coord64,1)
    glcd_dot(x_coord128,y_coord64,1)
    glcd_dot(x_coord128-1,y_coord64,1)
    glcd_dot(x_coord128,y_coord64+1,1)
    glcd_dot(x_coord128,y_coord64-1,1)
    glcd_dot(x_coord128+1,y_coord64+1,1)
    glcd_dot(x_coord128-1,y_coord64-1,1)
    glcd_dot(x_coord128+1,y_coord64-1,1)
    glcd_dot(x_coord128-1,y_coord64+1,1)
end sub

main:
  adcon1 = %00000100                          ' ANO & AN1-RA2 & RA5 
  TRISA  = %00001011
  PORTA  = 0x00
  trisc = $ff
  cnt = 47
  cnt2 = 1
  cnt3 = 1
  rond = 1
  rond2 = 1

  glcd_init(portb,0,1,2,3,5,4,portd)
  Glcd_Set_Font(@font5x7, 5, 7, 32)           ' Choose font size 5x7
  Glcd_Fill(0)                                ' Clear GLCD

while rond
  rond2 = 1
  Glcd_Write_Text("Teken het getal ",17,0,1)
  Glcd_Write_Text("Binnen het veld",17,7,1)
  Glcd_Rectangle(44,10,84,54,1)
  cnt = cnt+ 1
  Glcd_Write_Char(cnt,110,0,1)
  if cnt = 57 then rond = 0 cnt= 47 end if


    while rond2
    x_coord = GetX()
    y_coord = GetY()
    x_coord128 = (x_coord * 128) / 1024
    y_coord64 = 64 -((y_coord *64) / 1024)

    if ((x_coord128 >= 44) and (x_coord128 <= 84) and
 (y_coord64 >= 10) and (y_coord64 <= 54)) then

    tekenblokjes

    opslaanx[cnt3-1][cnt2-1] = x_coord128              '40, anders gecentreerd
    opslaany[cnt3-1][cnt2-1] = y_coord64

    cnt2 = cnt2 + 1
    aantal[cnt3-1]= cnt2-1

    end if
    if portc.5 = 1 then rond2 =0  glcd_fill(0) cnt3=cnt3+1 end if
    Delay_ms(100)
    wend



wend

Instellen:

          glcd_fill(0)
          glcd_write_text("Stel het uur in ", 17, 0, 1)
          glcd_write_text("Druk op C5 voor +1", 0, 7, 1)
          plaats = 0
          cnt3 = 0
          rond3 = 1
          rond4 = 1

          while rond3
                cnt2 = 0

                while rond4
                      do
                      cnt2 = cnt2 + 1
                      x_coord128= opslaanx[cnt3][cnt2-1]
                      x_coord128= x_coord128 + plaats
                      y_coord64 = opslaany[cnt3][cnt2-1]

                      tekenblokjes
                      totdat = aantal[cnt3]
                      loop until cnt2 = totdat
                      rond4=0
                wend

                if portc.5 = 1 then
                   while portc.5 nop wend
                   cnt3 = cnt3 + 1
                   glcd_fill(0)
                   rond4=1
                   glcd_write_text("Stel het uur in ", 17, 0, 1)
                   glcd_write_text("Druk op C5 voor +1", 0, 7, 1)
                end if


          wend


end.