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

📄 ad.c

📁 自己做的一个简单的设备.使用Freescale HC908SR12单片机,使用KEYS,AD,PWM,FLASH,LCD等模块.经使用运行稳定.
💻 C
字号:
//文件名   AD.C
//目    的 AD采集
//Copyright (c) 2006-2007 东方久乐公司电子研究所
//编    写 文洪奎 2007-01-15
//修    改 
//修改原因

#include "ad.h"
#include "global.h"

//0 FI1	 ATD0
//1 FI2	 ATD1
//2 R1	 ATD8
//3 R2	 ATD9
//4 I1	 ATD6
//5 I2   ATD5

unsigned int ADBuf[8];

extern SYSTEMSTR mSystem;

unsigned int GetAD(char nCh)
{
	unsigned int ADR;
	char i;
	ADR = 0;
	for( i = 0; i < 16; i++)
	{
		ADSCR = nCh;
		while(!ADSCR_COCO);	
		ADR = ADR + ADR0;
	}


	return ADR / 16;
}


unsigned int DatatoRes(char nCh,unsigned int Data)
{
	if(nCh == 1)
	{
		if(Data < mSystem.R1_O)
			return 0;
		else
			return (Data - mSystem.R1_O) * mSystem.R1_S / 8; 
	}
	if(nCh == 2)
	{
		if(Data < mSystem.R2_O)
			return 0;
		else
			return (Data - mSystem.R2_O) * mSystem.R2_S / 8;
	}
	return 0;
}


void InitAD(void)
{
	DDRC_DDRC3 = 0;		//电阻测量
	DDRC_DDRC4 = 0;		//电阻测量

	
	ADICLK = 0x034;   //00110100
//	ADSCR = 0x040;	//0ch 开中断
}

__interrupt void AD_Interrupt(void)		//AD转换
{
	static char ch = 0;
	static char pBuf = 0;
	
	ADBuf[ch] = ADR0;
	
	ch++;
	
	switch(ch)
	{
		case 1:
			ADSCR = 0x041;
			break;
		case 2:
			ADSCR = 0x048;
			break;
		case 3:
			ADSCR = 0x049;
			break;
		case 4:
			ADSCR = 0x046;
			break;
		case 5:
			ADSCR = 0x045;
			break;
		default:
			ADSCR = 0x040;
			ch = 0;
//			if(pBuf < 7)
//				pBuf++;
//			else
//				pBuf = 0;
			break;
	}
	
}

⌨️ 快捷键说明

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