#include <stdio.h>
#include <absacc.h>
#include <intrins.h>
#include <./atmel/at89x52.h>
#include "source.h"
unsigned int mv_to_dat(unsigned int mv)
{
#define vref_2times 5
unsigned int dat;
dat=mv*(1024/5);
dat &=0x3ff;
return dat;
}
void spi_write(unsigned int dat)
{
unsigned char i;
TLC_NCS=0;
TLC_CLK_SET;
for(i=0;i<16;i++)
{
TLC_DIN=((dat&0x8000)>0)?1:0;
TLC_CLK_PULSE;
dat<<=1;
}
TLC_CLK_SET;
TLC_NCS=1;
}
#define slow_mode 0x4000
#define fast_mode 0x0000
#define normal_power_mode 0x0000
#define save_power_mode 0x2000
void writea_refreshb(unsigned int mv)
{
unsigned int dat;
dat=mv_to_dat(mv);
dat <<=2;
dat |=fast_mode|normal_power_mode|0x8000;
spi_write(dat);
}
void write_doublebuf(unsigned int mv)
{
unsigned int dat;
dat=mv_to_dat(mv);
dat <<=2;
dat |=fast_mode|normal_power_mode|0x0001;
spi_write(dat);
}
void refresh_two_volt(unsigned int chla_mv,unsigned int chlb_mv)
{
write_doublebuf(chlb_mv);
writea_refreshb(chla_mv);
}
void refresh_chla_volt(unsigned int mv)
{
writea_refreshb(mv);
}
main()
{
unsigned int chlb_mv,chla_mv;
unsigned int i;
IE=0X40;
EA=1;
chlb_mv=1000;
chla_mv=2000;
i++;
if(i==10000)
{
chla_mv=1000;
refresh_chla_volt(chla_mv);
}
else if(i==30000)
{
i=0;
chlb_mv=3000;
refresh_two_volt(chla_mv,chlb_mv);
}
}