Visualizza un messaggio singolo
  #1  
Vecchio 02-18-2014, 12: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