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

📄 adc.c

📁 单片机AD转换程序
💻 C
字号:
#include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */
//===================================
byte ad_h;//ADC转换结果的高2位
byte ad_l;//ADC转换结果的低8位
byte ch_s;//通道选择
//===================================
//函数名:Init_ADC
//作用:初始化ADC
//================================================================================================================
void Init_ADC(void)
{
	ADC1CFG=0x98;//低功耗模式,10位精度,ADCK=总线频率
	ADC1SC2=0x00;//0x00:软件触发,比较功能禁止;0x40:RTI触发,比较功能禁止
	APCTL1=0x03;//通道引脚使能:0x01:AD0;0x02:AD1依此类推
	ch_s=1;//选择0通道
	ADC1SC1=0x40;//0x40:中断使能,单次转换,选择AD0,并启动了转换;0x41:中断使能,单次转换,选择AD1,并启动了转换;AD26为温度传感器引脚。
}
//===============================================================================================================
//函数名:Init_RTI
//作用:RTI初始化
//===================================
void Init_RTI(void)
{
	SRTISC=0x01;//RTI设置,8mS,不允许中断
}

void main(void) {
  Init_ADC();
  Init_RTI();
  EnableInterrupts; /* enable interrupts */
  /* include your code here */



  for(;;) {
    __RESET_WATCHDOG(); /* feeds the dog */
  } /* loop forever */
  /* please make sure that you never leave main */
}
//=========================================
//==========================================
//ADC转换完成中断服务程序
//==========================================
interrupt VectorNumber_Vadc1 ADC_ISR(void)
{

	switch(ch_s)
	{
		case 0:
			ad_h=ADC1RH;
	    ad_l=ADC1RL;
	    ch_s=1;
	    ADC1SC1=0x41;
	    break;
	   case 1:
	   	ad_h=ADC1RH;
	   	ad_l=ADC1RL;
	   	ch_s=0;
	   	ADC1SC1=0x40;
	   	break;
	   default:
	   	break;
	}
	asm(nop);//在此设置一个断点,观测ad_h和ad_l的变化
	
}

⌨️ 快捷键说明

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