Får inte EQU att fungera i HI-TECH C

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
StRob
Inlägg: 167
Blev medlem: 15 maj 2007, 09:30:47
Ort: Karlstad

Får inte EQU att fungera i HI-TECH C

Inlägg av StRob »

JAg försöker skriva en "EQU-definition" i mitt C-program enligt:

SEEKTIME EQU 1000

Men det går inte att kompilera.
Jag får varning: missing basic type; int assumed
error: "," expected
error: ";" expected

I manualen står det: "4.3.8.5 EQU
This pseudo-op defines a symbol and equates its value to an expression. For example
thomas EQU 123h
The identifier thomas will be given the value 123h. EQU is legal only when the symbol has not
previously been defined."

Och den har inte blivit definerad förut.

Jag skriver raden i början av koden efter att konfigurationsbitarna sätts.
Om jag byter ut dem mot static så funkar det. Men vad innebär det egentligen? Tar de upp minne i processorn som variabler?
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Får inte EQU att fungera i HI-TECH C

Inlägg av Icecap »

Kan det månne vara för att EQU inte är en C-kommando?

Testa istället:
#define SEEKTIME 1000

Edit: såg att den påstås klara av det men jag undrar vad man ska ha det till, det är inte C-syntax och stoppar export.
Mer edit: Jahopp, det är ju inte ett C-direktiv.
Senast redigerad av Icecap 20 maj 2009, 14:59:55, redigerad totalt 1 gång.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Får inte EQU att fungera i HI-TECH C

Inlägg av sodjan »

> I manualen står det: "4.3.8.5 EQU....

> Chapter 4, Macro Assembler
> 4.3 HI-TECH C Assembly Language
> 4.3.8 Assembler Directives
> 4.3.8.5 EQU

Vet du vad du håller på med ?
bos
Inlägg: 2314
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: Får inte EQU att fungera i HI-TECH C

Inlägg av bos »

StRob skrev:JAg försöker skriva en "EQU-definition" i mitt C-program enligt:

SEEKTIME EQU 1000

Men det går inte att kompilera.
Nej, och det ska du vara glad för. Hade det gått kompilera hade du haft en *rejält* trasig C-kompilator...

"#define SEEKTIME 1000" är det du söker.
StRob
Inlägg: 167
Blev medlem: 15 maj 2007, 09:30:47
Ort: Karlstad

Re: Får inte EQU att fungera i HI-TECH C

Inlägg av StRob »

> Vet du vad du håller på med?
JAg vet vad jag vill göra och jag har gjort det för länge sen, men minns inte exakt hur. Hade jag vetat hade troligtvis frågan inte hamnat här, eller hur? ;)
Jag anade att det var assemblerkommandon.

Jag försökte med #define oxå men utan framgång. Men jag gjorde nog något annat fel (använde ; kanske), för nu fungerar det fint.

En annan fråga i ämnet, (se koden nedan)

#define I 3
#define J 8
unsigned char temp=11+I+J; //Tar denna raden längre tid att exekvera än om jag skrev unsigned char temp=22;?

Kompilatorn översätter det så det blir samma sak va?
SvenW
Inlägg: 1156
Blev medlem: 24 april 2007, 16:23:10
Ort: Göteborg

Re: Får inte EQU att fungera i HI-TECH C

Inlägg av SvenW »

Beräkningar vid variabelinitiering sker vid kompileringstillfället.

Om man vill veta exekveringstider får man simulera eller profilera. Hur lång källkoden är har nästan inget med exekeringstid att göra. Optimeringen i kompilatorn brukar dessutom stuva om rätt ordentligt.

Man skiver för klarhet och läsbarhet så att man så lätt som möjligt kan underhålla sitt program, och låter kompilatorn och verktygen göra jobbet.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Får inte EQU att fungera i HI-TECH C

Inlägg av sodjan »

> Jag anade att det var assemblerkommandon.

Tja, eftersom det stog under "4.3.8 Assembler Directives" så
var det väl inte så mycket att gissa om... :-) :-)
StRob
Inlägg: 167
Blev medlem: 15 maj 2007, 09:30:47
Ort: Karlstad

Re: Får inte EQU att fungera i HI-TECH C

Inlägg av StRob »

Såg inte det. Jag sökte i pdf:en bara. Visste att jag använt EQU någon gång till just det så jag sökte för att se hur syntaxen såg ut..
Skriv svar