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

📄 acc1-2-1.c

📁 信号的采样与保持
💻 C
字号:
/*****************************************
文件名:ACC1-2-1.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的变量

/*****************************************
主函数
*****************************************/
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清零

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

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

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

/**********************************************
函数名:Timer0
功能  :定时器0中断服务程序
参数  :无   
返回值:无  
***********************************************/
void Timer0() interrupt 1  using 1
{
	str = !str;							//产生A/D启动信号
	TH0 = t0_h;							//重新装入初值
	TL0 = t0_l;
}

⌨️ 快捷键说明

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