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

📄 ad.c

📁 PIC12F576 A/D转换代码.c code
💻 C
字号:
#include<pic.h>
#define uchar unsigned char
#define nop() asm("nop")

static volatile bit AD_DONE   @((unsigned)&ADCON0*8)+1;
static volatile bit Disp_Data @((unsigned)&GPIO*8)+5;
static volatile bit SCLK      @((unsigned)&GPIO*8)+4;
static volatile bit ST_Enale  @((unsigned)&GPIO*8)+2;

//static volatile bit Motor_stop;
void Init_Mcu(void)//16f716初始化设置
{
   GPIO=0x0b;
   TRISIO=0x0b;
   OPTION=0x00;
   ADCON0=0xc0;//向右对齐,选择GP1为参考电压
   ANSEL=0x53;//ad转换时钟选择FOSC/16,即4US.同时选AN0通道进行转换
   ADRESH=0x00;//
   ADRESL=0x00;//
}

//延时20MS子程序
void Time_Delay(void)
{
    unsigned int count=5000;
    while(--count)
     {
        asm("clrwdt");
     }
}

void Init_Adc(void)//ad转换初始化设置
{
   ADON=1;//启动AD转换器
   AD_DONE=1;//正在AD转换,等结束时硬件清零
}

void main(void)
{
   unsigned char S_Data=0,i;
   Init_Mcu();
   Init_Adc();
   while(1)
     {
        while(AD_DONE);
        ADON=0;
        S_Data=0xff;
        for(i=6;i>0;--i)
           {
        if(S_Data&0x01)    //数据写 MOSI
           {
              Disp_Data=1;
           }
        else
           {
              Disp_Data=0;
           }
        SCLK = 1;    //时钟 SCLK = 1
        S_Data=S_Data>>1;
              nop();
        SCLK = 0;    //时钟 SCLK = 0
        }
       S_Data=ADRESL;
       //S_Data=0xff;
       for(i=8;i>0;--i)
          {
          if(S_Data&0x01)    //数据写 MOSI
          {
             Disp_Data=0;
          }
       else
          {
             Disp_Data=1;
          }
       SCLK = 1;    //时钟 SCLK = 1
       S_Data=S_Data>>1;
             nop();
       SCLK = 0;    //时钟 SCLK = 0
       }
       S_Data=ADRESH;
       //S_Data=0xff;
       for(i=2;i>0;--i)
          {
          if(S_Data&0x01)    //数据写 MOSI
          {
             Disp_Data=0;
          }
       else
          {
             Disp_Data=1;
          }
       SCLK = 1;    //时钟 SCLK = 1
       S_Data=S_Data>>1;
             nop();
       SCLK = 0;    //时钟 SCLK = 0
       }
       asm("nop");
       ST_Enale=1;
       asm("nop");
       asm("nop");
       asm("nop");
       asm("nop");
       ST_Enale=0;
       asm("nop");
       asm("nop");
       asm("nop");
       asm("nop");
       asm("nop");
       asm("nop");
       asm("nop");
       asm("nop");
       ADON=1;
       asm("nop");
       AD_DONE=1;
       Time_Delay();
    }
} 

⌨️ 快捷键说明

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