您当前的位置:五五电子网电子知识单片机-工控设备51单片机STC12C2052AD单片机AD转换程序设计 正文
STC12C2052AD单片机AD转换程序设计

STC12C2052AD单片机AD转换程序设计

点击数:7837 次   录入时间:03-04 11:55:02   整理:http://www.55dianzi.com   51单片机


 // 外部中断设置
 EX0=0;       // FFSK中断初始时关闭,有载波时再开启
 EX1=0;
 IT1=1;       // 外部中断0、1均为下降沿触发
 IT0=1;

 // 启动定时器0
 TH0=vT0HVal;      // 启动定时器0
 TL0=vT0LVal;
 TR0=1;

 InitCom(6); //设置波特率为9600 1-7波特率300-19200
  SCON = 0x50; //串口方式1,允许接收
 TH1 = THTL;
 TL1 = THTL;
 PCON = 0x80;  //波特率加倍控制,SMOD位
 RI = 0;   //清收发标志
 TI = 0;
 TR1 = 1;  //启动定时器

 IP=0x02;     //PT2=1
 IPH=0x02;     //PT2H=1,PT0H=1
 EA=1;

 delay_ms(10);     // 延时是为了避免定时器0无法产生中断的问题
}

/**************************************************************************
*    函数原型: void Para_initial(void);
*    功    能: 参数初始化
**************************************************************************/
void Para_initial(void){

 OutFlag=0;

 cT01ms  = vT01ms;
 cT10ms  = vT10ms;
// cT100ms  =  vT100ms;
 cT01s  =  vT01S;

 CS = 0;   //设置CS为0不选任何的音源,如为1则选第1路
}

/**************************************************************************
*    函数原型: void system_initial(void);
*    功    能: 系统初始化
**************************************************************************/
void system_initial(void){
 Chip_initial();
 Para_initial();
 DogReset();   // 已针对 STC89C58RD+ 作修改.06-04-06
}

/**************************************************************************
*    函数原型: void main(void)
*    功    能:
**************************************************************************/
void main(void){

 system_initial();

 while(1){
  DogReset();
  if(OutFlag){
   OutFlag=0;
   send_char_com(AD_Filter());
  }
 }
}

/**************************************************************************
*    函数原型: void Trint0(void) interrupt 1 using 1;
*    功    能: 全局定时
**************************************************************************/
void Trint0(void) interrupt 1 using 1{
/*
// 1ms 定时设置
 time0_tmp = 65536-time0*fosc/12;
 TH0 = (time0_tmp/256);
 TL0 = (time0_tmp%256);
 */
 TR0=0;          // 时基1mS
 TH0=vT0HVal;
 TL0=vT0LVal;
 TR0=1;
 TF0=0;

 if(!(--cT01ms)){
  cT01ms=vT01ms;
  if(!(--cT10ms)){
    cT10ms=vT10ms;
   if(!(--cT01s)){
    cT01s=vT01S;
    OutFlag=1;
/*    if(++vSecond>59){
     vSecond=0;
     if(++vMinute>59){
      vMinute=0;
      if(++vHour>23){
       vHour=0;
      }
     }
    }*/
   }
  }
 }
}

/**************************************************************************
*    函数原型: void Trint1(void) interrupt 1 using 1;
*    功    能: 全局定时
**************************************************************************/
/*
void Trint1(void) interrupt 1 using 1{
 TR0=0;
 TH0 = vT0HVal; // 时基1ms
 TL0 = vT0LVal;
 TF0=0;
 TR0=1;

 if(!(--cT01ms)){    //1ms
  cT01ms=vT01ms;

  if(!(--cT10ms)){   //10ms
   cT10ms=vT10ms;

   if(!(--cT100ms)){  //100ms
    cT100ms=vT100ms;

    if(!(--cT01s)){  //1s
     cT01s=vT01S;

     OutFlag=!OutFlag;
    }
   }
  }
 }
}

/**************************************************************************
*    函数原型: void ComInINT(void) interrupt 4 using 1
*    功    能: 串口接收中断
**************************************************************************/

void ComInINT(void) interrupt 4 {
 if (RI){ //判断是不收完字符
  switch(SBUF){
   case 0x61: CS = 1; break; //根据SBUF设置CS 接收'abcde'调试方便
   case 0x62: CS = 2; break;
   case 0x63: CS = 3; break;
   case 0x64: CS = 4; break;
   case 0x65: CS = 0; break;
  }
  P1 = 255; //P1口全为高电平,4-7通过反相为低不选任何音源,0-3为高用于读取按键
  RI = 0; //RI清零
 }
}

/**************************************************************************
*    end
*    end
**************************************************************************/



上一页  [1] [2] 


本文关键字:单片机  程序设计  51单片机单片机-工控设备 - 51单片机