#include<reg52.h>
#include<ABSACC.h>
#include<INTRINS.H>
#define Uint unsigned int
#define Uchar unsigned char
sbit DataDA = P1^4;
sbit ClkDA = P1^5;
sbit LOAD = P1^6;
sbit LDAC = P1^7;
Uchar flag=0;
void WriteDa(Uchar Dat,Uchar CH);
void Delay5Ms(void);
main()
{ Uchar i,n=10;
int j=20;
IE=0x84;
TCON=0x00;
while(1)
{/* XBYTE[0xf8f0]=0;
switch(flag)
{ case 1: {WriteDa(da[i++],0x00);if(i==21)i=0;flag=0;EA=1;}break;
case 2: {WriteDa(da[j--],0x00);if(j<0)j=5;flag=0;EA=1;}break;
default:break;
}*/
for (i=1;i<n;i++)
{
WriteDa(256/n*i,0);
}
for (i=n-2;i>1;i--){
WriteDa(256/n*i,0);}
}
}
Int1_process() interrupt 2 using 0
{ Uchar w=0;
w=~(XBYTE[0xf8f0]|0xf0);
if(w==0x08)flag=1;
else if(w==0x04)flag=2;
else flag=0;
Delay5Ms();
XBYTE[0xf8f0]=0;
EA = 0;
}
void WriteDa(Uchar Dat,Uchar CH)
{
Uchar i;
LDAC = 0;
ClkDA = 0;
i=Dat;
for(i=0;i<11;i++)
{
ClkDA = 1;
if(i<3)
{
CH<<=1;
DataDA = CY;
}
else
{ Dat <<=1;
DataDA = CY;
}
_nop_();
ClkDA = 0;
}
_nop_();
LOAD = 0;
_nop_();
LOAD = 1;
_nop_();
ClkDA = 1;
_nop_();
ClkDA = 0;
}
void Delay5Ms(void)
{
Uint i = 5552;
while(i--);
}