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

📄 adc.c

📁 在ARM7处理器S3C444B0X上的脉搏测量仪程序
💻 C
字号:
/**********************************************************
            A/D 模拟信号到数字信号转换库
            
        〈1〉寄存器设置
         〈2〉ADC初始化
**********************************************************/
#include "44b.h"
#include "ADC.h"

#include "define.h"
extern struct MeasureData measureData;


//------------------------------------------------------------
int  GetADCState(void)//返回A/D状态 1表示正在处理,0表处理结束
{
 return ((rADCCON>>6)&0x1);
}  
//------------------------------------------------------------
void SetNormalOrSleep(int a)//设置ADC正常或省电模式 0正常,1 省电
{
 if(a)
 {
  rADCCON|=(1<<5);//省点
 }
 else
 {
  rADCCON&=0x5f;//正常
 }
}
//------------------------------------------------------------
void SelectInput(int n)//选择输入通道 0---7
{
  rADCCON&=0x63;//对应位清零
  rADCCON|=(n<<2);//设置
}
//--------------------------------------------------
void DisableReadedStart(void)//AD转换不通过读启动
{
 rADCCON&=0x7d;
}
//------------------------------------------
void EnableReadedStart(void)//AD转换通过读启动
{
 rADCCON|=1<<1;
}
//--------------------------------------------
void StartADC(void)//启动ADC 注:若EnableReadedStart()使用,此函数将无效
{
 rADCCON|=1;
}
//-----------------------------------------------------------------
void SetPrescaler(int n)//设置ADC预定标器值 (0---255)  分频值=2*(rADCPSR+1)
{
 rADCPSR=n;
}
//-----------------------------------------------------------------
int GetConvertData()//读取十位转换数据
{
  int i;
   rADCCON|=0x1;//start A/D
   while(rADCCON&0x1);//等启动成功
   
   while(rADCCON&0x40);//等待转换结束
  for(i=0;i<rADCPSR;i++);
  return rADCDAT;
}
//-------------------------------------------------------------
//================================================================
void __irq ISR_ADC(void)//ADC转换完成中断
{
  rI_ISPC|=1;//清ADC中断标志
 ///此处代码尚未添加
 //MeasureHandler();
 
 
 
}
//======================================================================
void ADCInit(void)//ADC 初始化 
{
  rCLKCON|=1<<12;//使能ADC模数转换时钟输入
  /*SetNormalOrSleep(0);//设置ADC正常模式
  SelectInput(0);//选择模拟信号输入通道
  SetPrescaler(32);//设置ADC预定标器值  分频值=325*(4+1)
  EnableReadedStart();//AD转换通过读启动*/
  
  rADCCON=0x1|(0<<2);
  Delay(100);
  rADCPSR=0x20;
  rINTMSK|=(BIT_ADC);//关ADC中断
  //-------set  ADC interrupt
  pISR_ADC=(int)ISR_ADC;
  
  /*rINTCON|=(1<<2);//non-vectored interrupt 
  rINTCON&=0x5;//使能IRQ中断
  rINTMOD&=0x3fffffe;//ADC中断为IRQ模式*/
  
  //rINTMSK=~(BIT_GLOBAL|BIT_ADC);//开所有中断
}

⌨️ 快捷键说明

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