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

📄 test_t1.c

📁 ad7135的avr16的源程序
💻 C
字号:
//************************************************* 
//测试功能:t1内部计数,如有溢出则计量溢出次数
//测试方法:
//测试结果:ok
//时钟频率:外部8m
//管脚分配:
//注意事项: 
//完成时间:2009.03.15 
//**************************************************

//************************************************** 
//头文件
//************************************************** 
#include <iom16v.h>
#include <macros.h>
//************************************************** 


//***************************************************** 
//全局变量定义
//*****************************************************
unsigned char N=0;//用来区别是第一次外部中断还是第二次中断
unsigned int T1OVF_NUM=0;//用来计定时器T1的溢出次数
unsigned long int T1_NUM;//T1计的总时钟的个数

//***************************************************** 
//函数声明
//*****************************************************
void INT0_INIT(void);
void T1_INIT(void);

//***************************************************** 
//函数名称:void INT0_INIT(void)  
//函数功能:int0初始化,上升沿产生中断,使能中断
//注意事项:未开总中断
//*****************************************************
void INT0_INIT(void)
{	 
	 MCUCR|=((1<<ISC01)|(1<<ISC00));
	 GICR|=(1<<INT0);
}
//***************************************************** 
//函数名称:void INT0_INTERRUPT(void) 
//函数功能:中断处理,N+1
//注意事项: 
//*****************************************************
#pragma interrupt_handler INT0_INTERRUPT:2
void INT0_INTERRUPT(void)
{	 
	 if(!N)
	 {    
	 	  TCCR1B=0X01;//开始内部计数
		  MCUCR=0X02;//设置外部中断0下降沿产生中断
		  N++;
	 }
	 else
	 {    
	 	  TCCR1B=0X00;//定时器t1停止工作
		  CLI();//关中断,进行数据处理
		  //数据处理
		  T1_NUM=T1OVF_NUM;
		  T1_NUM=T1_NUM*65536+TCNT1;
		  //数据处理结束
		  T1OVF_NUM=0;
		  TCNT1=0X0000;
		  MCUCR|=((1<<ISC01)|(1<<ISC00));//设置外部上升沿中断
		  N=0;//
		  SEI();
	 }
}
//************************************************** 
//函数名称:void T1_INIT(void)  
//函数功能:内部定时
//注意事项,定时器未工作,定时器工作,需+TCCR1B=0X01;
//************************************************** 
void T1_INIT(void)
{	 
	 TCCR1A=0X00;
	 TCNT1=0X0000;
	 TIMSK|=(1<<TOIE1);
}
//************************************************** 
//函数名称:void T1_OVF(void)  
//函数功能:ti溢出处理
//注意事项:
//**************************************************
#pragma interrupt_handler T1_OVF:9
void T1_OVF(void)
{	 
	 T1OVF_NUM++;
}
//********************************************************** 
//主函数
//**********************************************************
void main(void)
{	 
	 CLI();
	 INT0_INIT();
	 T1_INIT();
	 SEI();
	 while(1)
	 ;
}

⌨️ 快捷键说明

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