×
单片机 > 单片机程序设计 > 详情

PIC单片机之AD框架

发布时间:2020-09-03 发布时间:
|

/********************************

*1 ADCON1 选择参考电压和模拟输入引脚

*  ADCON0 选择通道,时钟 打开AD模式

*2 清楚 ADIF   设置 ADIE PEIE GIE

*3  等待一定的时间

*4 开始A/D转化 GO/DONE=1

*5 1扫描方式开始扫描 GO/DONE 并清零

   2响应中断清中断标志位

*6 读取寄存器的值

*********************************/


#include

#include

#include

__CONFIG(0x00A);

#define  inter_flag

union  adrs

{

   int y1;

   unsigned char adre[2];

}adrsult;


delay_ms(unsigned char count)

{

 unsigned int i;

 unsigned int j;


 for(j=0;j

 for(i=0;i<100;i++);

}


void AD_Init(void)

{

   /*

   * INTCON

   * PIR1

   * PIE1

   * ADRESH

   * ADRESL

   * ADCON0

   * ADCON1

   * TRISA

   * PORTA

   * TRISE

   * PORTE

   * ANSEL

   */

   #ifdef inter_flag

   INTCON =0XC0;

   #else

   INTCON=0;

   ADIE=1;

   PEIE=1;

   ADCON0   =0X21;

   ADCON1 =0X80;//?

   TRISA5  =1;// AD input

   TRISA1  =0;//output

void Start_AD(void)

{

   GO=1;


#ifndef inter_flag

   while(!GO);

   adrsult.adre[0]=ADRESL;

   adrsult.adre[1]=ADRESH;

   if(adrsult.y1>0x020)

     {

      RA1=0;

     }

    else 

    {

      RA1=1;

   }

 delay_ms(100);

#endif


}

main()

{

 AD_Init(); 

Start_AD();

 TRISA  =0x02c;//RA2 RA3 RA5

delay_ms(1);

 while(1)

{

 delay_ms(100);

 Start_AD();


}

}

void  interrupt AD(void)

{

   if(ADIF)

     {

      ADIF=0;

      adrsult.adre[0]=ADRESL;

      adrsult.adre[1]=ADRESH;

      if(adrsult.y1>0x200)

      {

       RA1=0;

      }

    else 

      RA1=1;

     } 

   GO=1;


}



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机的抗干扰措施有哪些