'29/05/2012__14h 'Lecture des trames Thunderbolt.
#picaxe 08M2 'indique au compilateur le type de PIC
setfreq m16 '
symbol origine = b2 'adresse début mise en mémoire
symbol donnees = b3
symbol division = w12 'adresse données à récupérer
symbol Signe = b5
symbol Entier = b6
symbol Indice = b10
symbol Puiss = w10
symbol Mantisse = w11
origine = 30 'laisse libre jusqu'à w12
donnees = 22 'attention mettre bonne adresse
'22 adresse PPB division par 10 000
'34 adresse T°C division par 100 * par 1,0024
'30 adresse ADC pas de division * par 1.05
if donnees = 22 then
division = 10000
else
division = 1
end if
init: pause 3000 'tempo init OLED
serout C.2,N2400_16,(254,1) 'effacement message accueil
'exemple de données: 16,143,172,"azertyuiopqsdfghj20",61,184,"kkkkkk",62,194,"kk",66,43,"kkkkk"
reception:
bptr = origine 'adresse de stockage
'(16,140) octets "qualifiers" 16=début de trame 140=ID trame
serin [8500,timeout],C.1,N9600_16,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptr
bptr = origine+donnees 'adresse contenant le premier byte du nombre recherché
b0 = @bptrinc 'byte 1
b1 = @bptrinc 'byte 2
Float_Entier: 'le flottant à convertir est dans W0
if bit7=0 then
Signe="+"
else
Signe="-"
endif
b0 = b0*2 'shift left
bit0 = bit15 'on copie le bit de gauche de b1 dans celui de droite de b0
b0 = 127-b0
bit15 = 1 '1 implicite à gauche de la mantisse
select case b0
case 0 : Puiss=10000
case 1 : Puiss=5000
case 2 : Puiss=25000
case 3 : Puiss=12500
case 4 : Puiss=6250
case 5 : Puiss=31250
case 6 : Puiss=15625
case 7 : Puiss=7813
case 8 : Puiss=3906
case 9 : Puiss=19531
case 10 :Puiss=9766
case 11 :Puiss=4883
case 12 :Puiss=24414
case 13 :Puiss=12207
case 14 :Puiss=6103
case >14 : Puiss=30518
end select
Mantisse=0
Mantisse=bit15*Puiss+Mantisse
Puiss=Puiss/2
Mantisse=bit14*Puiss+Mantisse
Puiss=Puiss/2
Mantisse=bit13*Puiss+Mantisse
Puiss=Puiss/2
Mantisse=bit12*Puiss+Mantisse
Puiss=Puiss/2
Mantisse=bit11*Puiss+Mantisse
Puiss=Puiss/2
Mantisse=bit10*Puiss+Mantisse
Puiss=Puiss/2
Mantisse=bit9*Puiss+Mantisse
Puiss=Puiss/2
Mantisse=bit8*Puiss+Mantisse
Mantisse = Mantisse /w12
serout C.2,N2400_16,(254,1) 'effacement des 2 lignes
serout C.2,N2400_16,(254,128)
serout C.2,N2400_16, ("Fce = ",Signe,#mantisse," * 10-11")
'serout C.2,N2400_16, ("Temp = ",#mantisse,$D0,"C")
'serout C.2,N2400_16, ("Dac = ",Signe,#mantisse,"0 ",$C8,"V")
goto reception
timeout:
serout C.2,N2400_16,(254,192) 'curseur ligne 2
serout C.2,N2400_16,("Trame pas vue") 'écriture ligne 2
goto reception