?? ad0.c
字號(hào):
/*=========================================================================================
AD RUTINE
===========================================================================================
AHTH: GZG
DATE:
COMMENT:
===========================================================================================*/
/*-------------------------------------------INCLUDE---------------------------------------*/
#include <c8051f020.h>
/*-------------------------------------------GLOBLE DEFINE OR DECLARING--------------------*/
extern long int transfer_ad;
extern unsigned int xdata canmodify_package[];
extern int cycle_times;
/*-------------------------------------------FUCTIN DECLARING-----------------------------*/
extern void delay(int t);
/*-------------------------------------------16BIT SFR DEFINE------------------------------*/
sfr16 ADC0=0xbe;
sfr16 DAC0=0Xd2;
/*-----------------------------------------------------------------------------------------
AD ROOUTINE
------------------------------------------------------------------------------------------*/
void ad0(void)
{
static unsigned xdata dec=256;
static long xdata total=0L;
static long xdata jiyi[10];
xdata long transfer;
long xdata transfer1;
long xdata transfer2;
if(canmodify_package[6]==1)
{
AMX0SL=0X00;
ADC0CN=0x90;
while(!AD0INT);
total+=ADC0;
dec--;
if(dec==0)
{
jiyi[0]=jiyi[1];
jiyi[1]=jiyi[2];
jiyi[2]=jiyi[3];
jiyi[3]=jiyi[4];
jiyi[4]=jiyi[5];
jiyi[5]=jiyi[6];
jiyi[6]=jiyi[7];
jiyi[7]=jiyi[8];
jiyi[8]=jiyi[9];
transfer=((total/256));
if(transfer<0)transfer=jiyi[8];
jiyi[9]=transfer;
transfer1=(jiyi[0]+jiyi[1]+jiyi[2]+jiyi[3]+jiyi[4]+jiyi[5]+jiyi[6]+jiyi[7]+jiyi[8]+jiyi[9])/10;
if(transfer1>=(canmodify_package[0]+818))
{
cycle_times=1;
transfer_ad=((transfer1-818-canmodify_package[0])*(canmodify_package[3]*1000))/3243;
transfer2=((transfer1-818-canmodify_package[0])*4095)/3243;
if (transfer2>=4095)DAC0=4095;
else
{DAC0=transfer2;}
//if(transfer1>=4072)DAC0=4095;
//if(transfer_ad>=10000)DAC0=4095;
}
else
{
cycle_times=-8;
transfer_ad=((canmodify_package[0]+818-transfer1)*(canmodify_package[3]*1000))/3243;
DAC0=0;
}
// transfer_ad=transfer1;
dec=256;
total=0L;
}
}
if(canmodify_package[6]==3)//use the channel 3 and it is risister
{
AMX0SL=0X01;
ADC0CN=0x90;
//delay(1000);
while(!AD0INT);
// transfer_ad=ADC0;
total+=ADC0;
dec--;
if(dec==0)
{
jiyi[0]=jiyi[1];
jiyi[1]=jiyi[2];
jiyi[2]=jiyi[3];
jiyi[3]=jiyi[4];
jiyi[4]=jiyi[5];
jiyi[5]=jiyi[6];
jiyi[6]=jiyi[7];
jiyi[7]=jiyi[8];
jiyi[8]=jiyi[9];
transfer=((total/256));
if(transfer<0)transfer=jiyi[8];
jiyi[9]=transfer;
transfer1=(jiyi[0]+jiyi[1]+jiyi[2]+jiyi[3]+jiyi[4]+jiyi[5]+jiyi[6]+jiyi[7]+jiyi[8]+jiyi[9])/10;
if(transfer1>=canmodify_package[6]+11)
{
cycle_times=1;
transfer_ad=(transfer1-11-canmodify_package[0])*(canmodify_package[3]*1000)/4071;
DAC0=(transfer1-11-canmodify_package[0])*4095/4071;
if(transfer1>=4071)DAC0=4095;
}
else
{
cycle_times=-8;
transfer_ad=(canmodify_package[0]+11-transfer1)*(canmodify_package[3]*1000)/4071;
DAC0=0;
}
// transfer_ad=transfer1;
dec=256;
total=0L;
}
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -