za 16F seriju je C "prejak" i mislim da tu bez asm-a nema nista ... mada moram da odam priznanje C kompajleru koji pravi mikoelektronika ... radi skroz solidno na 16F
za 18F seriju, ja predlazem C iz razloga sto
- c je ozbiljan jezik koji daje mogucnost brzog rada i lakog odrzavanja koda
- microchip pravi C18 koji je odlican C kompajler, koji je dzaba i koji je "standard" a pritom za njega isti aj microchip pravi biblioteke za kontrlu svih periferija na istim tim microchip uC-ovima tako da kad kazes pwm1_start() to ce na svakom picu koji ima pwm1 da "radi", a ti ne moras da gubis vreme i da citas za svaki od njih "kako se tacno konfigurise ovo i ono"... tako da kad sutra odlucis da ti je 18f2550 kratak za 3 pina, promenis u hederu da nije 2550 nego 4550 i eto novih 20 io pinova a kod i dalje radi 1/1
e sad .. basic, pascal, jalp i razne druge varijante mogu da budu ok, no ja nekako volem da ako ucim da se vatam za nesto probam da to bude "sto standardnija rucka moguca" tako da ja za 18F seriju savetujem C prosto zato sto je "najstandardniji" ... a da ne spominjem cenu :) (sorry ako preterujem sa spominjanjem cena kompajlera, al ja ne trosim "fixovan" sw, tako da 200$ za csc C, 500$ za hitech c i slicne cifre nisu bas male pare ako uporedis sa 0$ za kompajler nista losiji koji ima sve biblioteke podrzane od likova koji prave taj isti uC).
dodatno, ja uC programiram iskljucivo u asm / C ... nikad nisam ni probao nista drugo tako da mogu samo to da preporucim. ono sto mogu da kazem kao "preneseno iskustvo" je da su mi drugari rekli
- za basic ljubitelje picbasic pro ili boostBasic
- za one koji hoce C kompajler i za 16f i za 18f - boost c (
http://www.sourceboost.com/ )
ja nisam probao nijedan od 3 spomenuta (ja imam kuplje csc c za 10F, 12F i 16F - ne radi za 18f, imam kupljen mikroe c compiler za 16f i 18f al uglavnom koristim C18 free edition od microchip-a)
generalno, sve mu to dodje na isto ... sintaksa je vise manje ista, kada skontas "princip" potpuno je nebitno dal ces procedure da deklarises sa
Code:
void ledOn(){
LATA=0xff;
LATB=0xff;
LATC=0xff;
LATD.F1=1;
}
ili
Code:
void ledOn(){
LATA=0xff;
LATB=0xff;
LATC=0xff;
LATDBits.D1=1;
}
ili
Code:
Procedure ledOn
Begin
LATA:=0xff;
LATB:=0xff;
LATC:=0xff;
LATD.F1:=1;
End;
ili
Code:
SUB ledOn
LATA=255
LATB=255
LATC=255
LATD.F1=1
END SUB
ili
Code:
ledOn:
LATA=255
LATB=255
LATC=255
LATD.F1=1
retw
ko sto vidis ... princip je isti ... dal ce turis tackazarez ili ne .. dal ce cukas sub/endsub, labela/return, begin/end, {/} .. taj deo savladas za par dana ..