the following code is an IAP routine in assembly being called from a c source : The return path is not found by the assembly function. #include <REG51F.H> extern void led_wr(unsigned char x); extern void bit_op(void); extern char ADSCAL_COMM; extern void boot1(); extern void bit_op(void); extern void started(); unsigned int i; void main() { started(); boot1();//This function calls assembly boot routine. while(1){ bit_op(); led_wr(0xff); } } ;//assembly function: PGM_MTP EQU 0XFFF0 CCAPM4 EQU 0XDE CCAP4l EQU 0XEE CCAP4H EQU 0XFE CMOD EQU 0XD9 mov 0XA2,#0x01 clr A mov P3,A mov P1,A setb P1^6;CEX3 mov a,0xa2 orl a,#0x20 mov 0xa2,a ;boot enable ; Erase mov r0,#0x0b ;Quick Erase: 0x00 mov r0,#0x00 mov r1,#0x01 ;bLOCK ERASE:0X0b mov dptr,#0x8000 lcall PGM_MTP clr P1^6 setb EA end
You seem to have started a new thread, instead of adding your reply to the existing thread. when posting code, don't forget to use the <pre> and </pre> tags - see the 'Tips for Posting Messages' on the left; eg,
unsigned int i; void main() { started(); boot1(); // This function calls assembly boot routine. while(1) { bit_op(); led_wr(0xff); } }