Stránka 1 z 1
Kompilátor pro C-čko
Napsal: 10 říj 2008, 16:16
od Amp
Zdravím, chystám se programovat PIC 16F84A a chtěl bych poradit nějaký kompilátor C - hex. Máte nějaký tip?
Mám nainstalovaný PICC lite ale nejsem ani z toho manuálu chytrej, vůbec nevím jak na něj...?
Díky za odpovědi

Napsal: 10 říj 2008, 16:55
od mikollar
ja pouzivam mikroC a plna spokojnost, pre 16f84 by mala stacit aj "obycajna" verzia, ale da sa bez problemov zohnat aj "ultimate" verzia

Napsal: 05 čer 2010, 14:40
od relatko
Zdravím.
Začal som sa učiť programovanie MCU zn.PIC v jazyku C.Softvér používam mikroC verzia 8.0.0.0.
Počas debugovania (F7) tohoto cvičného programu ako náhle príde na to že sa má vykonať matematická operácia i = ((a - b)/9);
naskočí okno z programom ale v asembléry.
Neviete mi prosím poradiť kde sa to dá nastaviť aby som mohol "krokovať"
program v C-čku ?
int a = 4457;
int b = 223;
int i ;
void main()
{
while (1)
{
Delay_ms(1);
i = ((a - b)/9);
Delay_ms(1);
}
}
Vopred vďaka za radu.
Relatko.
Napsal: 05 čer 2010, 19:24
od hakamusai
Zkusil bych tam dát něco jako DIV (v Pascalu celočíselné dělení),protože proměná je typu int.
Napsal: 05 čer 2010, 22:55
od hakamusai
To je blbost co jsem napsal -beru zpět.
Když spustím debugger (F9) a dám ve Watch okně Addall.Dál krokuju klávesou F8.Jde to po řádcích kódu a neskáče to do asm.
Napsal: 06 čer 2010, 04:51
od Burajko
Aky mas problem z htsoftom?Okrem toho ,ze v lite mode zamerne kurvi kod?
Je to standartny kompiler.
Napsal: 06 čer 2010, 06:13
od relatko
hakamusai píše:Když spustím debugger (F9) a dám ve Watch okně Addall.Dál krokuju klávesou F8.Jde to po řádcích kódu a neskáče to do asm.
Vďaka,už je všetko ako má byť.
Edit:
Pokiaľ sa program nedostane do nekonečnej slučky.
Ale napr.keď chcem prejsť cez AD prevod ,skončí na čakaní na ADCON0,2
a znovu ho prepne do asm.
Relatko.
Napsal: 06 čer 2010, 15:07
od Burajko
Ktoru smycku ,do{}while ,while{},for{,,} ?
Napsal: 06 čer 2010, 17:11
od relatko
Trochu som sa nepresne vyjadril.
Keď prídem na AD prevod,tak sa to tu zastaví:
A asm.nahodí keď dám pause debuger(F6)
$023A $ L_Adc_Read_0:
$023A $1D1F BTFSS ADCON0, 2
$023B $2A3E GOTO L_Adc_Read_1
$023C $0000 NOP
$023D $2A3A GOTO L_Adc_Read_0
Čaká sa až ADCON0, 2 bude v nule.Toto som myslel ako slučku.
Relatko.
Napsal: 06 čer 2010, 18:27
od hakamusai
relatko píše:Trochu som sa nepresne vyjadril.
Keď prídem na AD prevod,tak sa to tu zastaví:
A asm.nahodí keď dám pause debuger(F6)
$023A $ L_Adc_Read_0:
$023A $1D1F BTFSS ADCON0, 2
$023B $2A3E GOTO L_Adc_Read_1
$023C $0000 NOP
$023D $2A3A GOTO L_Adc_Read_0
Čaká sa až ADCON0, 2 bude v nule.Toto som myslel ako slučku.
Relatko.
Pro jakej MCU to je ?
Můžeš sem hodit kousek toho kódu ?
Napsal: 06 čer 2010, 20:19
od relatko
Je to pre PIC16F877A, kompilátor mikroC v.8.0.0.0.Tu je celý kód.
Je to ukážkový program priamo zo súboru examples,spomínaného kompilátora.
unsigned int temp_res;
void main() {
ADCON1 = 0x80; // Configure analog inputs and Vref
TRISA = 0xFF; // PORTA is input
TRISD = 0x3F; // Pins RB7, RB6 are outputs
TRISB = 0; // PORTD is output
do {
temp_res = ADC_Read(0); // Get 10-bit results of AD conversion
PORTB = temp_res; // Send lower 8 bits to PORTD
PORTD = temp_res >> 2; // Send 2 most significant bits to RB7, RB6
} while(1);
}
Na porte B mám ledky.
Natiahol som to do MCU,ale všetky ledky iba mihajú.Orig. projekt bol robený na 8Mhz x-tal ,ja som ho skompiloval na 4Mhz.
Zatiaľ neviem čo je tomu,budem vďačný každej rade.V C-čku "robím" asi tretí deň,úspešne som zatiaľ len rozblikal ledku.
Relatko.
Napsal: 06 čer 2010, 21:04
od Atlan
neches tam doplnit nejaku slucku na spomalenie ? nieco take ?
#include <delays.h>
Delay10KTCYx(255); to je c C18 prekladaca
najdi v helpe
A urcite bude treeba bud v projekde alebo zadefinovat v programe frekvenciu procesora na ktorej to bude bezat. a nezabudni deley v cecku nie su presne.
Napsal: 07 čer 2010, 09:49
od relatko
Mám to teraz takto napísané a konečne to šlape:
unsigned int temp_res;
void main() {
ADCON1 = 0x84;
TRISA = 0xFF; // PORTA is input
TRISB = 0; // PORTB is output
TRISD = 0; // PORTD is output
do {
temp_res = ADC_Read(3); // Get 10-bit results of AD conversion
PORTB = temp_res; // Send lower 8 bits to PORTD
PORTD = temp_res >> 2; // Send 2 most significant bits to RB7, RB6
} while(1);
}
Veľký rozdiel to nie je,ale mám podozrenie HW chybu,vďaka za snahu pomôcť.
Relatko.
Napsal: 12 čer 2010, 11:02
od relatko
hakamusai píše:To je blbost co jsem napsal -beru zpět.
Když spustím debugger (F9) a dám ve Watch okně Addall.Dál krokuju klávesou F8.Jde to po řádcích kódu a neskáče to do asm.
Nazdar.A ako mám postupovať keď prídem na podprogram aby som sa "prekrokoval" aj ním?Samozrejme že sa vykoná,akurát to nevidím.
Lebo F8 krokuje iba v maine.
Relatko.