⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 admain.i

📁 绝对好东西!aduc812AD转换代码,望对大家学习有所帮助!
💻 I
字号:
#line 1 "admain.c" /0   #line 1 "D:\KEIL\C51\INC\ADI\ADUC812.H" /0    sfr   P0        = 0x80; sfr   SP        = 0x81; sfr   DPL       = 0x82; sfr   DPH       = 0x83; sfr   DPP       = 0x84; sfr   PCON      = 0x87; sfr   TCON      = 0x88; sfr   TMOD      = 0x89; sfr   TL0       = 0x8A; sfr   TL1       = 0x8B; sfr   TH0       = 0x8C; sfr   TH1       = 0x8D; sfr   P1        = 0x90; sfr   SCON      = 0x98; sfr   SBUF      = 0x99; sfr   I2CDAT    = 0x9A; sfr   I2CADD    = 0x9B; sfr   P2        = 0xA0; sfr   IE        = 0xA8; sfr   IE2       = 0xA9; sfr   P3        = 0xB0; sfr   IP        = 0xB8; sfr   ECON      = 0xB9; sfr   ETIM1     = 0xBA;   sfr   ETIM2     = 0xBB; sfr   ETIM3     = 0xC4; sfr   EDATA1    = 0xBC; sfr   EDATA2    = 0xBD; sfr   EDATA3    = 0xBE; sfr   EDATA4    = 0xBF; sfr   WDCON     = 0xC0; sfr   EADRL     = 0xC6; sfr   T2CON     = 0xC8; sfr   RCAP2L    = 0xCA; sfr   RCAP2H    = 0xCB; sfr   TL2       = 0xCC; sfr   TH2       = 0xCD; sfr   PSW       = 0xD0; sfr   DMAL      = 0xD2; sfr   DMAH      = 0xD3; sfr   DMAP      = 0xD4; sfr   ADCCON2   = 0xD8; sfr   ADCDATAL  = 0xD9; sfr   ADCDATAH  = 0xDA; sfr   PSMCON    = 0xDF; sfr   ACC       = 0xE0; sfr   I2CCON    = 0xE8; sfr   DCON      = 0xE8; sfr   ADCCON1   = 0xEF; sfr   B         = 0xF0; sfr   ADCOFSL   = 0xF1; sfr   ADCOFSH   = 0xF2; sfr   ADCGAINL  = 0xF3; sfr   ADCGAINH  = 0xF4; sfr   ADCCON3   = 0xF5; sfr   SPIDAT    = 0xF7; sfr   SPICON    = 0xF8; sfr   DAC0L     = 0xF9; sfr   DAC0H     = 0xFA; sfr   DAC1L     = 0xFB; sfr   DAC1H     = 0xFC; sfr   DACCON    = 0xFD;    sbit  TF1       = 0x8F; sbit  TR1       = 0x8E; sbit  TF0       = 0x8D; sbit  TR0       = 0x8C; sbit  IE1       = 0x8B; sbit  IT1       = 0x8A; sbit  IE0       = 0x89; sbit  IT0       = 0x88;  sbit  T2EX      = 0x91; sbit  T2        = 0x90;  sbit  SM0       = 0x9F; sbit  SM1       = 0x9E; sbit  SM2       = 0x9D; sbit  REN       = 0x9C; sbit  TB8       = 0x9B; sbit  RB8       = 0x9A; sbit  TI        = 0x99; sbit  RI        = 0x98;  sbit  EA        = 0xAF; sbit  EADC      = 0xAE; sbit  ET2       = 0xAD; sbit  ES        = 0xAC; sbit  ET1       = 0xAB; sbit  EX1       = 0xAA; sbit  ET0       = 0xA9; sbit  EX0       = 0xA8;  sbit  RD        = 0xB7; sbit  WR        = 0xB6; sbit  T1        = 0xB5; sbit  T0        = 0xB4; sbit  INT1      = 0xB3; sbit  INT0      = 0xB2; sbit  TXD       = 0xB1; sbit  RXD       = 0xB0;  sbit  PSI       = 0xBF; sbit  PADC      = 0xBE; sbit  PT2       = 0xBD; sbit  PS        = 0xBC; sbit  PT1       = 0xBB; sbit  PX1       = 0xBA; sbit  PT0       = 0xB9; sbit  PX0       = 0xB8;  sbit  PRE2      = 0xC7; sbit  PRE1      = 0xC6; sbit  PRE0      = 0xC5; sbit  WDR1      = 0xC3; sbit  WDR2      = 0xC2; sbit  WDS       = 0xC1; sbit  WDE       = 0xC0;  sbit  TF2       = 0xCF; sbit  EXF2      = 0xCE; sbit  RCLK      = 0xCD; sbit  TCLK      = 0xCC; sbit  EXEN2     = 0xCB; sbit  TR2       = 0xCA; sbit  CNT2      = 0xC9; sbit  CAP2      = 0xC8;  sbit  CY        = 0xD7; sbit  AC        = 0xD6; sbit  F0        = 0xD5; sbit  RS1       = 0xD4; sbit  RS0       = 0xD3; sbit  OV        = 0xD2; sbit  F1        = 0xD1; sbit  P         = 0xD0;  sbit  ADCI      = 0xDF; sbit  DMA       = 0xDE; sbit  CCONV     = 0xDD; sbit  SCONV     = 0xDC; sbit  CS3       = 0xDB; sbit  CS2       = 0xDA; sbit  CS1       = 0xD9; sbit  CS0       = 0xD8;  sbit  MDO       = I2CCON^7; sbit  MDE       = I2CCON^6; sbit  MCO       = I2CCON^5; sbit  MDI       = I2CCON^4; sbit  I2CM      = I2CCON^3; sbit  I2CRS     = I2CCON^2; sbit  I2CTX     = I2CCON^1; sbit  I2CI      = I2CCON^0;  sbit  D1        = DCON^7; sbit  D1EN      = DCON^6; sbit  D0        = DCON^5; sbit  D0EN      = DCON^3;  sbit  ISPI      = 0xFF; sbit  WCOL      = 0xFE; sbit  SPE       = 0xFD; sbit  SPIM      = 0xFC; sbit  CPOL      = 0xFB; sbit  CPHA      = 0xFA; sbit  SPR1      = 0xF9; sbit  SPR0      = 0xF8;#line 4 "admain.c" /0   #line 1 "D:\KEIL\C51\INC\MATH.H" /0      #pragma SAVE #pragma REGPARMS extern char  cabs  (char  val); extern int    abs  (int   val); extern long  labs  (long  val); extern float fabs  (float val); extern float sqrt  (float val); extern float exp   (float val); extern float log   (float val); extern float log10 (float val); extern float sin   (float val); extern float cos   (float val); extern float tan   (float val); extern float asin  (float val); extern float acos  (float val); extern float atan  (float val); extern float sinh  (float val); extern float cosh  (float val); extern float tanh  (float val); extern float atan2 (float y, float x);  extern float ceil  (float val); extern float floor (float val); extern float modf  (float val, float *n); extern float fmod  (float x, float y); extern float pow   (float x, float y);  #pragma RESTORE  #line 5 "admain.c" /0   sbit Run_Id=P2^5;    sbit Ctrl1 =P2^6; sbit Ctrl0 =P2^7; sbit Adv0  =P1^2; sbit Adv1  =P1^3;         unsigned int      Ad_o[2]; unsigned int      Da_i[2];  struct segment{ unsigned char V_start;	   unsigned char V_end;	   unsigned char mul_col;	   unsigned char add_col;    };	    struct segment Seg;  unsigned char DATA_U[64]; unsigned char Rptr,Wptr; unsigned char DATA_W[16]; unsigned char Uptr,Ulen;  unsigned char flag,flag1,flag_s; unsigned char time_p,time_r; idata unsigned int  temp_s[20];   unsigned int GetADC(unsigned char Channel)	   {  unsigned char *p; unsigned char  variable; unsigned int  ADC_value;		   p=(unsigned char *)&ADC_value; ADCCON2=Channel; SCONV=1; while (SCONV) {	 } SCONV=1; while (SCONV) {	 } variable=0x0F&ADCDATAH;		  *p=variable; p++; *p=ADCDATAL;  return(ADC_value); }  void SetDac(unsigned char num,unsigned int Da_data) { if(num==0) {  DACCON=0x1F; DAC0H=(unsigned char)((Da_data>>8) & 0x000f); DAC0L=(unsigned char)(Da_data & 0x00ff); } else if(num==1) { DACCON=0x1F; DAC1H=(unsigned char)((Da_data>>8) & 0x000f); DAC1L=(unsigned char)(Da_data & 0x00ff); } }  void Delay(unsigned char  D_time)   { unsigned char i,j,k; for(i=0;i<D_time;i++) {   for(j=0;j<0xff;j++); { k=j; k=i; i=i; } } }  unsigned char  Select_V(unsigned int Y)		    { unsigned long M; unsigned char i,Vsel; M=(unsigned long)Y*10*5*2;   M=M / 4095; Vsel=(unsigned char)(M & 0x000000ff); if(Vsel>100) Vsel=100; for(i=0;i<20;i++) { EADRL=i; ECON=0x01; if((Vsel>=EDATA1)&&(Vsel<EDATA2))    { Seg.V_start= EDATA1; Seg.V_end  = EDATA2; Seg.mul_col= EDATA3; Seg.add_col= EDATA4; return 1; } } return 0; }  unsigned char Write_f(unsigned char type,unsigned char Addr) { switch(type) { case 0:	     ECON=0x06;       Delay(20);		   ECON=0x03;  break; case 1:	    EADRL=Addr; ECON=0x01;   EDATA1=Seg.V_start; EDATA2=Seg.V_end  ; EDATA3=Seg.mul_col; EDATA4=Seg.add_col; ECON=0x05;   ECON=0x02; ECON=0x03;   break; case 2:	    EADRL=Addr; ECON=0x02;   ECON=0x03;   break; }  return 1; }   void Calcu(unsigned char num) {	 unsigned long G; unsigned int Y; if(num==0)  {Y=GetADC(0x02);} else if(num==1)  {Y=GetADC(0x03); }      Ad_o[num]=Y; if(Select_V(Y)==1);		    { G=Seg.add_col *4095; G=G/5/2; 		    Y=(unsigned int)((Seg.mul_col*Y+G)/10); if(Y>=0x0FFF) { Y=0x0FFF; } if(Y<=0x0000) { Y=0x0000; } } Da_i[num]=Y; SetDac(num,Y); }  void SystemInit()		  {  TL2=0xDC; TH2=0xFF; RCAP2L=0xDC; RCAP2H=0xFF; T2CON=0x30;         TR2=1; SCON=0x50;          ES=1;			    TMOD=0x01;		   TL0=0xFF; TH0=0xDB;           TR0=1; ET0=1;                     ADCCON1=0x7c; EA=1;  			  }  void Write_Serial(unsigned int T_Data)	     { unsigned char *p; p=(unsigned char *)&T_Data; DATA_W[0]=*p; DATA_W[1]=*(p+1); Uptr=0; Ulen=2; TI=1; flag=1; }   void W_Uart(unsigned char *p, unsigned char len)	     { unsigned char i; for(i=0;i<len;) { DATA_W[i]=*p; i++; p++; } Uptr=0; Ulen=len; TI=1; flag=1; }   void main(void) { unsigned char  i,k; unsigned char  len_r,count;  unsigned char  Addr_P; unsigned char  temp_t; unsigned char  j; SystemInit();  Rptr=Wptr=Uptr=0x00; flag=flag1=0x00; flag_s=0x00; temp_t=0; W_Uart("Aduc812 start",13);  for(i=0;i<20;i++) { temp_s[i]=0x00;}  EADRL=0; ECON=0x01; if(EDATA1==0xff) { Write_f(0x00,0x00);    EADRL=0x9f; for(i=0;i<16;i++) { EADRL=i;  	  EDATA1=i*10; EDATA2=(i+1)*10; EDATA3=10; EDATA4=0; ECON=0x02; EADRL=0x9f; } } EADRL=0x40; ECON=0x01; j=EDATA1;   while(1) {	 if(time_r==0){Run_Id=~Run_Id;time_r=10;} if(Ctrl0) { if(GetADC(0x02)>0x0030) { i=j&0x1f; if(i>20) i=20;  SetDac(0,temp_s[i]); } else { SetDac(0,0x0000); for(i=0;i<20;i++) { temp_s[i]=0x00;} } } else { Calcu(0); if(flag_s==1) { for(i=19;i>0;i--) { temp_s[i]=temp_s[i-1];} temp_s[0]=Da_i[0]; flag_s=0; if((j&0x80)!=0) temp_t++;  if(temp_t>=0x64) { Write_Serial(Ad_o[0]);     while(flag){;} Write_Serial(Da_i[0]); temp_t=0; } }  }  if((time_p==0)&&(flag1>0)) { flag1=0x00;    W_Uart("uart err",8); Rptr=Wptr=0x00; }  if(Rptr!=Wptr) { time_p=0x80; k=DATA_U[Rptr]; Rptr++; if(Rptr>=64) {Rptr=0;} switch(flag1)  { case 0:				  if(k==0xaa) {flag1=0x01;} else if(k==0xbb){flag1=0x10;} else if(k==0xcc) { for(i=0;i<20;i++) { Write_Serial(temp_s[i]);     while(flag){;} }  } else if(k==0xcd){flag1=0x20;} break; case 1: if(k>0x00)    { flag1=0x02; len_r=k; if(len_r>60) {len_r=60;} count=0x00; Addr_P=Rptr; } else  {flag1=0x00;} break; case 2:     	  count++; if(count==len_r){flag1=0x03;}  break; 		   case 3:   Write_f(0x00,0x00);    Rptr=Addr_P; count=len_r/4; for(i=0;i<count;i++) { EADRL=i;  EDATA1=DATA_U[Rptr]; EDATA2=DATA_U[Rptr+1]; EDATA3=DATA_U[Rptr+2]; EDATA4=DATA_U[Rptr+3];	  ECON=0x02; EADRL=0x9F;   Rptr=Rptr+4;  }  len_r=0; Addr_P=0; flag1=0x00; Rptr=Wptr=0x00; W_Uart("down ok" ,7); break; case 0x10:		           flag1=0x00; Rptr=Wptr=0x00; len_r=0; for(i=0;i<65;i++) { EADRL=i; ECON=0x01; Seg.V_start= EDATA1; Seg.V_end  = EDATA2; Seg.mul_col= EDATA3; Seg.add_col= EDATA4; while(flag){;} W_Uart((unsigned char*)&Seg ,4); }  break; case 0x20: { flag1=0x00; EADRL=0x40; ECON=0x01;  	    EDATA1=k; EDATA2=0x0f; EDATA3=0xcd; EDATA4=0xcd;	 ECON=0x05;  	    ECON=0x02; EADRL=0x41;   j=k; W_Uart("ok" ,2); Rptr=Wptr=0x00; } }  }  } 	  }     void S_int0() interrupt 0 {  }  void S_int1() interrupt 2 {  }  void Time0() interrupt 1 { TL0=0xFF; TH0=0xDB;   TR0=1;          if(time_r>0){time_r--;flag_s=1;} if(time_p>0){ time_p--;}  }   void Uart_isr() interrupt 4 {  EA=0; if(RI) {					  RI=0; DATA_U[Wptr]=SBUF; Wptr++; if(Wptr>=64) Wptr=0; } if(TI) { TI=0; if((Uptr<Ulen) && (flag==0x01)) { SBUF=DATA_W[Uptr]; Uptr++; } else { flag=0; } }  EA=1; }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -