module tastiera4x4 symbol riga1 = portb.7 ' inserire qui pin inp. per riga 1 symbol riga2 = portb.6 ' inserire qui pin inp. per riga 2 symbol riga3 = portb.5 ' inserire qui pin inp. per riga 3 symbol riga4 = portb.4 ' inserire qui pin inp. per riga 4 symbol colonna1 = portb.0 ' inserire qui pin out per colonna 1 symbol colonna2 = portb.1 ' inserire qui pin out per colonna 2 symbol colonna3 = portb.2 ' inserire qui pin out per colonna 3 symbol colonna4 = portb.3 ' inserire qui pin out per colonna 4 dim i, ta as byte sub procedure tastiera4x4() implements sub procedure tastiera4x4() trisb.7=1 'inserire qui bit direz. dato riga 1 trisb.6=1 'inserire qui bit direz. dato riga 2 trisb.5=1 'inserire qui bit direz. dato riga 3 trisb.4=1 'inserire qui bit direz. dato riga 4 trisb.0=0 'inserire qui bit direz. dato colonna 1 trisb.1=0 'inserire qui bit direz. dato colonna 2 trisb.2=0 'inserire qui bit direz. dato colonna 3 trisb.3=0 'inserire qui bit direz. dato colonna 4 '=========== leggo tastiera ========= tastiera: Delay_ms(50) i = 16 'nessun tasto premuto colonna1=0 colonna2=1 colonna3=1 colonna4=1 if riga1 = 0 then i=1 end if if riga2 = 0 then i=4 end if if riga3 = 0 then i=7 end if if riga4 = 0 then i=10 end if colonna1=1 colonna2=0 if riga1 = 0 then i=2 end if if riga2 = 0 then i=5 end if if riga3 = 0 then i=8 end if if riga4 = 0 then i=0 end if colonna2=1 colonna3=0 if riga1 = 0 then i=3 end if if riga2 = 0 then i=6 end if if riga3 = 0 then i=9 end if if riga4 = 0 then i=11 end if colonna3=1 colonna4=0 if riga1 = 0 then i=12 end if if riga2 = 0 then i=13 end if if riga3 = 0 then i=14 end if if riga4 = 0 then i=15 end if if i = 16 then ta= 16 return end if if i = ta then goto tastiera end if ta=i return end sub '=========== fine lettura tastiera ========= end.