i was trying do compile very simple programs to learn and get used to mikroc to migrate from assembler. I get some unusual behave when accessing bits from PORT3 and others PORTS.
example:
this code
Code: Select all
#define LED P3.B4
void main() {
while(1) {
LED = !LED;
delay(50);
}
}
Code: Select all
;Teste.c,15 :: LED = !LED;
0x0048 0xE5B0 MOV A, P3
0x004A 0xA2E4 MOV C, ACC.B4
0x004C 0xB3 CPL C
0x004D 0xE5B0 MOV A, P3
0x004F 0x92E4 MOV #224.B4, C
0x0051 0xF5B0 MOV P3, A
Then i try doing this
Code: Select all
bdata volatile sfr unsigned char PORTA3 absolute 0xB0;
#define LED PORTA3.B4
void main() {
while(1) {
LED = !LED;
delay(50);
}
}
Code: Select all
;Teste.c,15 :: LED = !LED;
0x0048 0xA2B4 MOV C, P3.B4
0x004A 0xB3 CPL C
0x004B 0x92B0 MOV P3, C
then i try this:
Code: Select all
bdata volatile sfr unsigned char PORTA3 absolute 0xB0;
sbit LED at PORTA3.B4;
void main() {
while(1) {
LED = !LED;
delay(50);
}
Code: Select all
;Teste.c,15 :: LED = !LED;
0x0048 0xA2B8 MOV C, 180.B4
0x004A 0xB3 CPL C
0x004B 0x92B4 MOV 180, C
How other way to solve this?
Regards,
Fabricio K.