| ??? 04/25/07 14:04 Read: times |
#137928 - or rather try this highly pathological C code :^) Responding to: ???'s previous message |
/* some highly pathological C code following now */
#include <at89x52.h>
#define M0(x) static unsigned char counter##x
#define M1(x) do{if(!--counter##x){P1_##x=!P1_##x;counter##x=1+0x##x;}}while(0)
#define M2(x) M##x(0);M##x(1);M##x(2);M##x(3)
void my_irq_bitwise3(void) __interrupt(1){M2(0);M2(1);}
but it compiles to something you might like:
_my_irq_bitwise3:
push acc
djnz _my_irq_bitwise3_counter0_1_1,00104$
cpl _P1_0
mov _my_irq_bitwise3_counter0_1_1,#0x01
00104$:
djnz _my_irq_bitwise3_counter1_1_1,00109$
cpl _P1_1
mov _my_irq_bitwise3_counter1_1_1,#0x02
00109$:
djnz _my_irq_bitwise3_counter2_1_1,00114$
cpl _P1_2
mov _my_irq_bitwise3_counter2_1_1,#0x03
00114$:
djnz _my_irq_bitwise3_counter3_1_1,00121$
cpl _P1_3
mov _my_irq_bitwise3_counter3_1_1,#0x04
00121$:
pop acc
reti
|
| Topic | Author | Date |
| timing sequence generation using AT89S52 | 01/01/70 00:00 | |
| Can you count? | 01/01/70 00:00 | |
| I used 1 sec delay | 01/01/70 00:00 | |
| This is a typical PCA job | 01/01/70 00:00 | |
PCA? | 01/01/70 00:00 | |
| start with assembler code generated from C | 01/01/70 00:00 | |
| or rather try this highly pathological C code :^) | 01/01/70 00:00 | |
| Use the Timer | 01/01/70 00:00 |



