aduri
19-01-2009, 12:11
Salve a tutti.
Non so' se e' la zona adatta dove postare
Sto sviluppando un progetto con i microprocessori PIC e Mikrobasic.
Ho il seguente dubbio:
La porta A e' usata in un mio progetto per 2 scopi.
La porta(0) e (1) con 2 conversioni analogiche digitali e le altre 6 porte devono decodificare i livelli alti e bassi (+5V e 0V) di 2 contraves per la sintonia MHz e decine di MHz della mia radio (da 1 a 30MHz) e
visualizzarlo sull'LCD.
questa e' la decodifica dei contraves:
'0=%0000
'1=%0001
'2=%0010
'3=%0011
'4=%0100
'5=%0101
'6=%0110
'7=%0111
'8=%1010
'9=%1001
Il primo contraves definisce le unita'(da 0 a 9 MHz) e l'altro le decine (da 1 a 3 decine di MHz) quindi 6 bit giusto quelle rimaste della porta a.
Purtroppo non posso usare la funzione
byteMHz=Bcd16Dec2(porta)
in quanto la porta e' usata anche come conv. A/D.
Pensavo di usare la funzione select case.
Per le decine di MHz avrei risolto cosi' anche se non e' molto elegante:
decMHz:
if (porta.2=1) and (porta.3=0) then
bytedecMHz=1
end if
if (porta.2=0) and (porta.3=1) then
bytedecMHz=2
end if
if (porta.2=1) and (porta.3=1) then
bytedecMHz=3
end if
bytetostr(bytedecMHz,decMHz)
LCD_out(1,5,decMHz)
Cosa mi consigliate voi?
grazie dell'aiuto.
Antonio
Non so' se e' la zona adatta dove postare
Sto sviluppando un progetto con i microprocessori PIC e Mikrobasic.
Ho il seguente dubbio:
La porta A e' usata in un mio progetto per 2 scopi.
La porta(0) e (1) con 2 conversioni analogiche digitali e le altre 6 porte devono decodificare i livelli alti e bassi (+5V e 0V) di 2 contraves per la sintonia MHz e decine di MHz della mia radio (da 1 a 30MHz) e
visualizzarlo sull'LCD.
questa e' la decodifica dei contraves:
'0=%0000
'1=%0001
'2=%0010
'3=%0011
'4=%0100
'5=%0101
'6=%0110
'7=%0111
'8=%1010
'9=%1001
Il primo contraves definisce le unita'(da 0 a 9 MHz) e l'altro le decine (da 1 a 3 decine di MHz) quindi 6 bit giusto quelle rimaste della porta a.
Purtroppo non posso usare la funzione
byteMHz=Bcd16Dec2(porta)
in quanto la porta e' usata anche come conv. A/D.
Pensavo di usare la funzione select case.
Per le decine di MHz avrei risolto cosi' anche se non e' molto elegante:
decMHz:
if (porta.2=1) and (porta.3=0) then
bytedecMHz=1
end if
if (porta.2=0) and (porta.3=1) then
bytedecMHz=2
end if
if (porta.2=1) and (porta.3=1) then
bytedecMHz=3
end if
bytetostr(bytedecMHz,decMHz)
LCD_out(1,5,decMHz)
Cosa mi consigliate voi?
grazie dell'aiuto.
Antonio