

void send_i2c_data //nothing
        (
        // nothing, but remember "unsigned char *str "//this is  pointer, ok R0 is good pointer
        )

{
      //nothing   "unsigned int buffer_count = 0;" //ok R7 is good counter
       mov r7,#0 
      //still nothing , " unsigned char i2c_status;" - but declaring inside routine/function 
      // is usefull?? , is visible outside  ? 
RSEG DATA
i2c_status: ds 1 ;assuming is not defined in stack, is visible
      
  
//		while ((*i2c_buffer = *str)!='&#65533;')
//		{
//		str++;
//		i2c_buffer++;
//		buffer_count++;
//		}
//	i2c_status = i2c_transmit(0x60);
       mov r1,i2c_buffer
this_loop:       
       mov a,@r1
       mov @r0,a
       inc r0
       inc r1
       mov a,r2  ;You think this line is false?Why? Compiler (i saw 10 years ago) uses R2 to       ;pass/receive char parameters. I do not use C, but i never read that "a=b" is function.
       xrl a,"n"
       jnz this_loop 	
  
       mov r2,#0x60 ; pass char parameter to function
       call i2c_transmit
       mov i2c_status,r2 
    
}
regard, hope with help
