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

📄 acc1-2-2.c

📁 信号的采样与保持
💻 C
字号:
/*****************************************
文件名:ACC1-2-2.C
功能描述:定时100ms采样,利用当前的采样值和上一次的采样值进行直线差值,并送D/A输出
*****************************************/
#include <reg51.h>
#include <absacc.h>

/*****************************************
宏定义
*****************************************/
#define uchar unsigned char
#define uint  unsigned int
#define ADC_7 XBYTE[0x7ff0]			//定义模数转换IO地址
#define DAC_1 XBYTE[0x7ff2]			//定义D/A第一路的IO地

/*****************************************
全局变量定义
*****************************************/
sbit  str = P1^7;
uchar data ad[10];					//声明变量,用于存储转换结果
uint  data time;					//声明变量,用于定时
uchar data t0_h,t0_l;				//用于存储定时器0的初值
uchar TK;							//声明采样周期变量
uchar TC;							//TK的变量
uchar KK;							//斜率变量
char  UK;							//当前的D/A输出值
char  UK_1;							//上一次的输出值

/*****************************************
主函数
*****************************************/
void main(void)
{ 

	TMOD = 0x01;
	time = 10;							//定时1ms
	t0_h  = (65536-500*time)/256;		//计算定时器0初值
	t0_l  = (65536-500*time)%256;
	t0_l = t0_l+20;						//修正因初值重装而引起的定时误差
	TH0  = t0_h;
	TL0  = t0_l;
	IT1  = 1;							//边沿触发中断
	EX1  = 1;							//开外部中断1
	ET0  = 1;							//开定时中断0
	TR0  = 1;							//启动定时器

	TK   = 10;							//采样周期=TK×10ms
	TC   = 1;
	DAC_1= 0x80;						//D/A清零
	UK   = 0;							//变量清零
	UK_1 = 0;
	KK   = 0;

	EA	 = 1;							//开总中断
	while(1);
}

/**********************************************
函数名:INT1
功能  :1号外部中断服务程序 
参数  :无*  
返回值:无 * 
***********************************************/
void int1() interrupt 2 using 2
{	int i;
	uchar j;

	TC--;								//判采样周期到否
  if(TC==0)
   {
	 UK_1= UK;
	 UK  = ADC_7-128;					//读取A/D转换结果
	 DAC_1=UK_1+128;					//送D/A输出
     TC=TK;								//采样周期变量恢

⌨️ 快捷键说明

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