Oppure

Loading
24/05/13 18:23
Petenausen
Buonasera a tutti,
avrei l'urgenza di trasformare il seguente programma da mikroc a mikropascal.
Se qualcuno riuscisse a farmelo e a farlo funzionare sarei disposto anche a pagarlo.
E' veramente urgente
@ DEVICE INTRC_OSC
@ DEVICE WDT_OFF
@ DEVICE PWRT_OFF
@ DEVICE MCLR_OFF
@ DEVICE BOD_OFF
@ DEVICE LVP_OFF
@ DEVICE CPD_OFF
@ DEVICE CCPMX_ON

DEFINE OSC 4 ' Specifica clock a 4MHz
define ADC_BITS 8
DEFINE ADC_SAMPLEUS 50
DEFINE ADC_CLOCK 3

OSCCON = 'Imposta clock interno a 4MHz
ADCON1 = 2 'RA0..RA4 pin analogici

TRISA = %00001111
TRISB = %11110000

symbol msx1 = PORTB.0 'motore destro avanti
symbol msx2 = PORTB.1 'motore destro indietro
symbol mdx1 = PORTB.2 'motore sinistro avanti
symbol mdx2 = PORTB.3 'motore sinistro indietro
symbol S1 = PORTB.4 'radar SRF05 DX
symbol S2 = PORTB.5 'radar SRF05 SX

symbol lama = PORTA.4 'motore lama
symbol lch = PORTA.6 'led batteria scarica (giallo)
symbol lan = PORTA.7 'led anomalia (rosso)

umi var byte 'variabile pioggia
Vb var byte 'variabile tensione batteria
tem Var byte 'variabile temperatura

tp var word
mov var word
distdx var word
distsx var word

PORTB = 0
lan=0
lch=0
S1=0
S2=0

pause 500 ' Avvia taglio erba
lama=1

pause 500
mdx1=1 ' Motori avanti
mdx2=0
msx1=1
msx2=0

MAIN

adcin 3,tem 'lettura della temperatura del motore
adcin 2,umi 'lettura dell'umidità
adcin 1,lux 'lettura della luminosità
ADCIN 0,Vb 'lettura della tensione della batteria

if vb<100 then goto standby ' Sottotensione batteria

if tem<80 then goto sicurezza ' sovratemperatura

if umi<80 then goto sicurezza ' Pioggia

pause 500

' Rilevamento ostacolo DX
PULSOUT S1, 2 ' 20usec impulso start
PULSIN S1, 1, distdx ' legge distanza ostacolo DX

' Rilevamento ostacolo SX
PULSOUT S2, 2 ' 20usec impulso start
PULSIN S2, 1, distsx ' legge distanza ostacolo SX

if distdx<300 and distsx<300 then ' Ostacolo di fronte
mdx1=0 ' Fermo motori
mdx2=0
msx1=0
msx2=0
pause 500 ' Indietreggio
mdx1=0
mdx2=1
msx1=0
msx2=1
pause 1000
mdx1=0 ' Fermo motori
mdx2=0
msx1=0
msx2=0
pause 500
' Ruoto rasaerba
random mov
tp = mov/200 ' DX o SX a caso
if (mov//2)=0 then
mdx1=1
mdx2=0
msx1=0
msx2=1
pause tp ' Per un tempo casuale
else
mdx1=0
mdx2=1
msx1=1
msx2=0
pause tp ' Per un tempo casuale
endif
goto MAIN
endif

if distsx < 300 then ' Ostacolo sulla SX
mdx1=0 ' Fermo motore DX finchè ostacolo SX
goto MAIN
endif

if distdx < 300 then ' Ostacolo sulla DX
msx1=0 ' Fermo motore SX finchè ostacolo DX
GOTO MAIN
endif
' Nessun ostacolo riprende la marcia
mdx1=1
mdx2=0
msx1=1
msx2=0

goto MAIN

'SOTTO TENSIONE
standby
PORTB=0
lama=0
lch=1
pause 500
lch=0
pause 500
goto sicurezza

'SOVRATEMPERATURA o PIOGGIA
sicurezza
PORTB=0
lama=0
lan=1
pause 500
lan=0
pause 500
goto sicurezza

end
aaa
24/05/13 18:39
LittleHacker
NO

Leggi il regolamento!
P.S: E' mikroBasic e non mikroC!
Ultima modifica effettuata da LittleHacker 24/05/13 18:42
aaa
24/05/13 18:46
Petenausen
non si può?
aaa
24/05/13 19:58
LittleHacker
Postato originariamente da Petenausen:

non si può?


Leggi il regolamento!
aaa