Inaccurate output of AD5420

Hello, I'm using AD5420 chip to output 4-20 mA current, but the Iout has jitter and error, the maximum error is 0.1 mA, I made three same AD5420 circuit board, the error size from 0.05 to 0.1, the error will gradually reduce over time, but the error will eventually be about 0.05. Could you tell me where the mistake is? Thank you very much.

void WriteToAD5420(unsigned char *Buf)
{

	unsigned	char	ValueToWrite = 0;
    unsigned	char	i = 0;
	unsigned	char	j = 0;
	

	CLR_LATCH();													  //CS=0
	ad5420_delay(300);
	for ( i=3;i>0;i-- )												  //写入24位数据
 	{
	 	ValueToWrite =	*(Buf+i-1);									  //第3个字节先被送出
		for (j=0; j<8; j++)
		{
			CLR_SCL();
			ad5420_delay(30);
			if(0x80 == (ValueToWrite & 0x80))						  //数据高位先被送出
			{
				SET_SDO();	    										//Send one to SDIN pin of AD5420
			}
			else
			{
				CLR_SDO();	    										//Send zero to SDIN pin of AD5420
			}
										 
			ad5420_delay(30);
			SET_SCL();
			ad5420_delay(30);
			ValueToWrite <<= 1;	//Rotate data
		}

	}
	CLR_SCL();
	Delay100us();
	SET_LATCH();
	Delay100us();													//CS=1,锁存数据
	CLR_LATCH();
}
//初始化
void ad5420_init()
{
  unsigned char buf[3];
  
  
  AD5420_sclk =0;
  AD5420_sdin =0;
  
  AD5420_latch=0;
  Delay100us();
  AD5420_latch=1;
  Delay100us();
  AD5420_latch=0;					   //产生LANCH的脉冲,清除移位寄存器中多余的数据


  buf[2] = ADDRESS_RESET;				//复位寄存器
  buf[1] = 0x00;              			//DATA_High_8bit----Disable Slew Rate
  buf[0] = 0x01;						//DATA_LOW_8bit
  WriteToAD5420(buf);		    		//Write 560001 to SHIFT REGISTER  to write 0001 to control register
  Delay100us();
  
  
  buf[2] = ADDRESS_CONTROL;				//控制寄存器
  buf[1] = 0x1f;              			//DATA_High_8bit----Disable Slew Rate
  buf[0] = 0x05;						//DATA_LOW_8bit
  WriteToAD5420(buf);		    		//Write 551005 to SHIFT REGISTER  to write 1005 to control register
  Delay100us();
}
void ad5420_setValue(unsigned int value)
{
 unsigned char buf[3];

  
  AD5420_sclk =0;
  AD5420_sdin =0;
  AD5420_latch=0;
  Delay100us();
  AD5420_latch=1;
  Delay100us();
  AD5420_latch=0;					   //产生LANCH的脉冲,清除移位寄存器中多余的数据

 
 buf[2] = ADDRESS_DATA;				//数据寄存器
 buf[1] = value>>8;					//DATA_High_8bit
 buf[0] = value;					//DATA_LOW_8bit
 WriteToAD5420(buf);		   		//Write 01 99 66H to SHIFT REGISTER  to write 99 66 to DATA REGISTER
 Delay100us();
}
void main()
  {	
//  int a=500;
	AD5420_sclk =0;
  AD5420_sdin =0;
  AD5420_latch=0;
	Delay3000ms();
	ad5420_init();
	 EA=1;
	Timer2Init();
//	AD5420BACK=40895;
	AD5420BACK=32768;
	ad5420_setValue(AD5420BACK);
//	outen();

	while(1)
	{if(go)
	{ 
//	 ad5420_setValue(AD5420BACK);
	 go=0;
	 }

	
  }
 }