DEVICE 16F628A                ; Pic type.
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE              ; Alle ingangen digitaal.

'Declares
lcd_rspin          porta.4
lcd_enpin          porta.3
lcd_lines		   2

delayms 500                               
Cls

'Symbols
Symbol Lcd_Length		= 15   
 'Dim's
	Dim Toets 		    As byte
	Dim BepaaldeToets	As Byte
    Dim Teken [96]      As Byte
    Dim AantalIndrukken As Byte
    Dim VorigeToets     As Byte
    Dim AantalTekens    As Byte
	
	Clear        
'Array Codes	
	Teken[0]	= "a"
	Teken[1]	= "b"
	Teken[2]	= "c"
	Teken[3]	= "d"
	Teken[4]	= "e"
	Teken[5]	= "f"
	Teken[6]	= "g"
	Teken[7]	= "h"
	Teken[8]	= "i"
	Teken[9]	= "j"
	Teken[10]	= "k"
	Teken[11]	= "l"
	Teken[12]	= "m"
	Teken[13]	= "n"
	Teken[14]	= "o"
	Teken[15]	= "p"
	Teken[16]	= "q"
	Teken[17]	= "r"
	Teken[18]	= "s"
	Teken[19]	= "t"
	Teken[20]	= "u"
	Teken[21]	= "v"
	Teken[22]	= "w"
	Teken[23]	= "x"
	Teken[24]	= "y"
	Teken[25]	= "z"
	Teken[26]	= "A"
	Teken[27]	= "B"
	Teken[28]	= "C"
	Teken[29]	= "D"
	Teken[30]	= "E"
	Teken[31]	= "F"
	Teken[32]	= "G"
	Teken[33]	= "H"
	Teken[34]	= "I"
	Teken[35]	= "J"
	Teken[36]	= "K"
	Teken[37]	= "L"
	Teken[38]	= "M"
	Teken[39]	= "N"
	Teken[40]	= "O"
	Teken[41]	= "P"
	Teken[42]	= "Q"
	Teken[43]	= "R"
	Teken[44]	= "S"
	Teken[45]	= "T"
	Teken[46]	= "U"
	Teken[47]	= "V"
	Teken[48]	= "W"
	Teken[49]	= "X"
	Teken[50]	= "Y"
	Teken[51]	= "Z"
	Teken[52]	= "."
	Teken[53]	= ","
	Teken[54]	= "?"
	Teken[55]	= "!"
	Teken[56]	= "@"
	Teken[57]	= "€"
	Teken[58]	= "$"
	Teken[59]	= "%"
	Teken[60]	= "^"
	Teken[61]	= "&"	
	Teken[62]	= "~"
	Teken[64]	= ")"
	Teken[65]	= "("
	Teken[66]	= "-"
	Teken[67]	= "_"
	Teken[68]	= "="
	Teken[69]	= "+"
	Teken[70]	= "\"
	Teken[71]	= "|"
	Teken[72]	= "["
	Teken[73]	= "]"
	Teken[74]	= "{"
	Teken[75]	= "}"
	Teken[76]	= ":"
	Teken[77]	= ";"
	Teken[78]	= "/"
	Teken[79]	= "<"
	Teken[80]	= ">"
	Teken[81]	= """
	Teken[82]	= "`"
	Teken[83]	= " "
	Teken[84]	= "1"
	Teken[85]	= "2"
	Teken[86]	= "3"
	Teken[87]	= "4"
	Teken[88]	= "5"
	Teken[89]	= "6"
	Teken[90]	= "7"
	Teken[91]	= "8"
	Teken[92]	= "9"
	Teken[93]	= "*" 
	Teken[94]	= "0"
	Teken[95]	= "#"
'Programma

While 1=1
 	Gosub OphalenToets
	If BepaaldeToets = VorigeToets Then
            Inc AantalIndrukken
            If AantalIndrukken >9 Then AantalIndrukken = 0 
        Else
            Inc AantalTekens
            AantalIndrukken = 0
            VorigeToets = BepaaldeToets            
        End If
	Gosub VertaalToetsNaarTeken
	Gosub TekenOpLcd 
Wend  
	   OphalenToets:
    Repeat
        BepaaldeToets = inkey, 
       If BepaaldeToets <> 16 Then
            DelayMS 50
            While InKey <> 16: wend
            DelayMS 10
        End If
    Until BepaaldeToets <> 16
    Return        
	
	VertaalToetsNaarTeken:
        select BepaaldeToets 
            case 0:
				Toets = Lookup AantalIndrukken, ["52,53,54,55,76,77,81,82,72,73,84"]
            Case 1:  																					
                Toets = LookUp AantalIndrukken, [0,1,2,26,27,28,85]      					
            Case 2:  
                Toets = LookUp AantalIndrukken, [3,4,5,29,30,31,86]
            Case 3:
                Toets = Lookup AantalIndrukken, [6,7,8,32,33,34,87]
            case 4:
                Toets = LOOKUP AantalIndrukken, [9,10,11,35,36,37,88]
            Case 5:
                Toets = Lookup AantalIndrukken, [12,13,14,38,39,40,89]
            case 6:
                Toets = Lookup AantalIndrukken, [15,16,17,18,41,42,43,44,90]           
            case 7:
                Toets = Lookup AantalIndrukken, [19,20,21,45,46,47,91]
            case 8:
                Toets = Lookup AantalIndrukken, [22,23,24,25,48,49,50,51,92]
            case 9:
                Toets = Lookup AantalIndrukken, [56,57,58,59,60,61,62,68,69,93]
            case 10:
                Toets = Lookup AantalIndrukken, [82,94]
            case 11:
                Toets = Lookup AantalIndrukken, [63,64,65,66,67,70,71,74,75,78,79,80,95] 	 
		Endselect
	
	TekenOpLcd:
	If AantalTekens=0 Then Inc AantalTekens
	Print at 2,aantaltekens, Toets

	Return