.: robotitaly.NET :. - la community italiana sulla robotica  

Vai indietro   .: robotitaly.NET :. - la community italiana sulla robotica > Microcontrollori > PICAXE

PICAXE Forum dedicato ai microcontrollori programmabili in Basic 'PICAXE'

Rispondi
 
Strumenti della discussione Modalità di visualizzazione
  #1  
Vecchio 02-18-2014, 01:40 PM
calida calida non è collegato
Roboter
 
Registrato dal: Oct 2009
Messaggi: 17
predefinito aiuto spiegazione programma

Salve a tutti, sto cercando di interfacciare il mio picaxe 14m2 ad un display di un veccio nokia 3310 in rete ho trovato questo listato che caricato nel picaxe funziona alla perfezione ma non riesco a capire un passaggio del programma ossia la sub writetolcd
Il listato è questo
codice:
symbol SCLK = 0	'Display pin 2 to PICAXE out 0
symbol SDA = 1	'Display pin 3 to PICAXE out 1
symbol DC = 2	'Display pin 4 to PICAXE out 2
symbol CS = 3	'Display pin 5 to PICAXE out 3
symbol RES = 4	'Display pin 8 to PICAXE out 4
symbol Loop1 = b0
symbol Value= b1
symbol Loop2 = b2
symbol Command = b3
symbol Counter = b4
symbol X = b5
symbol Y = b6
symbol Mask = b7
symbol Loop3 = b8


setfreq m8
gosub Init
gosub black
for Loop3=0 to 5
	X=4*loop3 
	Y=Loop3
	gosub GotoXY
	gosub PRname
next
gosub normal
setfreq m4
start:
pause 500
gosub black
pause 500
gosub invert
pause 500
gosub white
pause 500
gosub normal

goto Start

end	

PrName:
	Command = 0
	for Loop1 = 6 to 66
		read Loop1,Value
		gosub WriteToLCD
	next Loop1
return
Init:
	EEPROM 0,(33,197,6,19,32,12)
	EEPROM 6,(62,65,65,65,34,0,127,8,4,4,120,0,124,8,4,4,8,0,0,68,125,64,0,72,84,84,84,32,0,0,0,0,0,0,127,64,64,64,64,0,120,84,84,84,24,0,60,64,48,64,60,00,68,125,64,0,72,84,84,84,32)
	
	low SCLK 
	low SDA
	low DC
	low CS
	low RES
	pause 20
	low RES
	pause 500
	high RES
	high CS
	Command = 1
	for Loop1 = 0 to 5 		‘ start a loop
		read Loop1, Value 	‘ read value from EEPROM
		gosub WriteToLCD 	‘ transmit to serial LCD module
	next Loop1
gosub white
	X = 0
	Y = 0
	gosub GotoXY
gosub clearfast
gosub normal
return

WriteToLCD:
	high DC	'Data mode
	if Command = 0 then DataMode
	low DC	'Command mode
	DataMode:
	low CS
	for Loop2 = 1 to 8
		low SCLK
		Mask = Value & 128
		low SDA
		if Mask = 0 then Skiphigh
		high SDA
		Skiphigh:
		high SCLK
		Value = Value * 2
	next Loop2
	high CS
return

ClearFast:
	low SDA
	high DC
	low CS
	for Loop1=1 to 48
		for Loop3= 1 to 84
			low SCLK
			high SCLK
		next loop3
	next Loop1
return

GotoXY:
	Command = 1
	Value = X + 128
	gosub WriteToLCD
	Value = Y + 64
	gosub WriteToLCD
return

Invert:
	Command = 1
	Value = 13
	gosub WriteToLCD
return

Black:
	Command = 1
	Value = 9
	gosub writetolcd
return

White:
	command=1
	value=8
	gosub writetolcd
return

Normal:
	command=1
	value=12
	gosub writetolcd
return
Non riesco a capire il perche value nel for next viene ad ogni passaggio moltiplicato per 2
Qualcuno sarebbe cosi generoso da spiegarmi cosa fa ogni operazione della sub writetolcd?


Non mi è chiaro da mask=value & 128
Questo è un and bit a bit con 128 che in binario è 10000000 ma poi? Cosa va a finire dentro a mask? Per dopo value viene moltiplicato per 2?
Rispondi quotando
Rispondi

Segnalibri

Strumenti della discussione
Modalità di visualizzazione

Regole d'invio
Non puoi inserire discussioni
Non puoi inserire repliche
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è attivo
Le smilie sono attive
Il codice IMG è attivo
il codice HTML è disattivato

Salto del forum


Tutti gli orari sono GMT. Attualmente sono le 11:15 PM.


Powered by vBulletin versione 3.8.7
Copyright ©: 2000 - 2018, Jelsoft Enterprises Ltd.