Kompilátor pro C-čko

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
Amp
Příspěvky: 10
Registrován: 26 zář 2008, 00:00

Kompilátor pro C-čko

#1 Příspěvek 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 :wink:
Uživatelský avatar
mikollar
Příspěvky: 1477
Registrován: 26 pro 2004, 00:00
Bydliště: Košice - okolie

#2 Příspěvek 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 :wink:
Uživatelský avatar
relatko
Příspěvky: 85
Registrován: 08 úno 2009, 00:00

#3 Příspěvek 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.
hakamusai
Příspěvky: 939
Registrován: 17 dub 2007, 00:00

#4 Příspěvek od hakamusai »

Zkusil bych tam dát něco jako DIV (v Pascalu celočíselné dělení),protože proměná je typu int.
hakamusai
Příspěvky: 939
Registrován: 17 dub 2007, 00:00

#5 Příspěvek 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.
Uživatelský avatar
Burajko
Příspěvky: 1819
Registrován: 21 srp 2009, 00:00

#6 Příspěvek od Burajko »

Aky mas problem z htsoftom?Okrem toho ,ze v lite mode zamerne kurvi kod?
Je to standartny kompiler.
Už druhý krát strihám a furt je to krátke
Uživatelský avatar
relatko
Příspěvky: 85
Registrován: 08 úno 2009, 00:00

#7 Příspěvek 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.
Uživatelský avatar
Burajko
Příspěvky: 1819
Registrován: 21 srp 2009, 00:00

#8 Příspěvek od Burajko »

Ktoru smycku ,do{}while ,while{},for{,,} ?
Už druhý krát strihám a furt je to krátke
Uživatelský avatar
relatko
Příspěvky: 85
Registrován: 08 úno 2009, 00:00

#9 Příspěvek 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.
hakamusai
Příspěvky: 939
Registrován: 17 dub 2007, 00:00

#10 Příspěvek 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 ?
Uživatelský avatar
relatko
Příspěvky: 85
Registrován: 08 úno 2009, 00:00

#11 Příspěvek 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.
Uživatelský avatar
Atlan
Příspěvky: 4514
Registrován: 10 kvě 2004, 00:00
Bydliště: Košice

#12 Příspěvek 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.
Uživatelský avatar
relatko
Příspěvky: 85
Registrován: 08 úno 2009, 00:00

#13 Příspěvek 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.
Uživatelský avatar
relatko
Příspěvky: 85
Registrován: 08 úno 2009, 00:00

#14 Příspěvek 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.
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“