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

📄 adc_sample.c

📁 ADC模块实现模数转换
💻 C
字号:
//测试功能:用事件管理器B的定时器4定时时间到来触发A/D采样的启动。采样时采用级连模式,一次做16个转换,转换通道分别是0~15。
//          转换完成后,在A/D中断服务子程序中将转换结果读出。该程序只作一次A/D采样。



#include  "ioreg.h"

int ADRESULT[16];
volatile unsigned int *j;
int i=0x00,cesi;

void inline disable()
{
      asm(" setc INTM");
}

void inline enable()
{
      asm(" clrc INTM");
}


int initial()
{
     asm(" setc SXM");
     asm(" clrc OVM");
     asm(" clrc CNF");
     SCSR1 = 0x81fe;
     WDCR = 0x0e8;
     
     IMR = 0x0001;
     IFR = 0x0ffff;
}

void ADINIT()
{
    T4CNT=0x0000;
    T4CON=0x170c;
    T4PR=0x75;
    GPTCONB=0x400;
    EVBIFRB=0x0ffff;
    ADCTRL1=0x10;
    ADCTRL2=0x8404;
    MAXCONV=0x0f;
    CHSELSEQ1=0x3210;
    CHSELSEQ2=0x7654;
    CHSELSEQ3=0xba98;
    CHSELSEQ4=0xfedc;
}

void ADSOC()
{
   T4CON=T4CON|0x40;
}

void interrupt nothing()
{
    return;
}

void interrupt adint()
{
    asm(" clrc SXM");
    j=RESULT0;
    for(i=0;i<=15;i++,j++)
    {
    	ADRESULT[i]=*j>>6;
    	cesi=ADRESULT[i];
    }
    ADCTRL2=ADCTRL2|0x4200;
    enable();
}

main()
{
    disable();
    initial();
    ADINIT();
    enable();
    ADSOC();
    while(1)
    {
    	
        if(i==0x10) break;
    }
    T4CON=T4CON&0x0ffbf;
    while(1)
    {
    	;
    }
}





                   

⌨️ 快捷键说明

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