We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi, all I found there is likely a bug in keil c51's compiler(V6.0 DEMO Version) When compile and link the following program lines: #include <absacc.h> #include <reg52.h> #define ADDR201 XBYTE[0x8000] bdata unsigned char D201; sbit green = D201^2; void main(void) { while(1) { green = 1; ADDR201 = D201; green = 0; green = 1; ADDR201 = D201; } } the result was: RSEG ?PR?main?TMAIN main: ; SOURCE LINE # 8 ; { ; SOURCE LINE # 9 ?C0001: ; while(1) ; SOURCE LINE # 10 ; { ; SOURCE LINE # 11 ; green = 1; ; SOURCE LINE # 12 SETB green ; ADDR201 = D201; ; SOURCE LINE # 13 MOV DPTR,#08000H MOV A,D201 MOVX @DPTR,A ; green = 0; ; SOURCE LINE # 14 CLR green ; green = 1; ; SOURCE LINE # 15 SETB green ; ADDR201 = D201; ; SOURCE LINE # 16 MOVX @DPTR,A ; } ; SOURCE LINE # 17 SJMP ?C0001 ; END OF main END there was an obvious error in the assembly code for source line # 16 ! there should be another line: MOV A,D201 before the line: MOVX @DPTR,A Is it a bug?