Re: 8051 and a C switch statement
- From: Anton Erasmus <nobody@xxxxxxxxxxxxxxxx>
- Date: Sun, 30 Dec 2007 22:28:57 +0200
On Sun, 30 Dec 2007 18:45:20 +0100, Martin Griffith
<mart_in_medina@xxxxxxxx> wrote:
On Sun, 30 Dec 2007 19:18:32 +0200, in comp.arch.embedded Anton
Erasmus <nobody@xxxxxxxxxxxxxxxx> wrote:
On Fri, 28 Dec 2007 23:39:04 +0100, Martin GriffithAh, there was I happily writing a 16 case switch.
<mart_in_medina@xxxxxxxx> wrote:
Got a 4k8 serial biphase signal being decoded by a at85c52 with an
external non retrig monostable (hc221), and I'm running out of time
occasionally waiting for the generic 2*8 LCD to clear it's busy flag.
The LCD is fed with the info from the incoming biphase
To reduce the "reaction time" I could use a long switch statement on
the signal's clock interrupt bitcount from the sync word, 80 per
frame, do just a little bit each interrupt.
The real question is
" how big can I make the switch statement?"
Whats the limit?
I'm using the rasionance C compiler.
There can be another problem, depending on your compiler.
The older IAR C51 Compilers generated thread unsafe code for
a switch statement for more than about 3 items, hence if one used
big switch statements inside an interrupt routine and outside, the
code crashed. This was for IAR C51 V4 and V5. I do not know whether
this has been fixed, or if an option had been added to force the
compiler to generate thread safe code.
You can always split a big switch statement into multiple smaller
ones. This is a bit slower than one big one.
i.e.
switch (var) /* Check bottom bits */
{
case 0:
break;
case maxsize:
break;
default:
switch(var)
{
case maxsize+1:
break;
}
}
Regards
Anton Erasmus
Generally speaking, should you keep code in a case statement short?
If it is in an interrupt routine, then it normally should be short,
not because it is in a switch statement, but because it is executed
in an interrupt routine.
I personally keep the segments in a switch statement reasonably short.
I find that the code becomes difficult to maintain if one has huge
sections in each case statement, especially if it is a switch
statement with many cases. Also the switch statement is normally
for decision making, while the contents of the case blocks are for
controlling/action. I find it good practice to split these concepts.
[snipped]
Regards
Anton Erasmus
.
- References:
- 8051 and a C switch statement
- From: Martin Griffith
- Re: 8051 and a C switch statement
- From: Anton Erasmus
- Re: 8051 and a C switch statement
- From: Martin Griffith
- 8051 and a C switch statement
- Prev by Date: computers
- Next by Date: Re: computers
- Previous by thread: Re: 8051 and a C switch statement
- Next by thread: C for Polynomial Fit
- Index(es):
Relevant Pages
|