#include "iom16v.h"
#include "macros.h"
#include "stdio.h"
//声明定时器中断
#pragma interrupt_handler Second_Ir:9
//IO初始化
void IO_Init()
{
DDRD&=~BIT(PD6);//设置输入模式
}
//定时器1-普通模式-初始化函数
void T1_Normal_Init()
{
//TCCR1B|=BIT(2); //分频设置为256;0x40
TCCR1B|=BIT(ICES1); //上升沿触发
TCNT1H=0xE0; //初值高八位
TCNT1L=0xBF; //初值低八位
TIMSK|=BIT(TICIE1)|BIT(TOIE1); //输入捕获中断使能,定时器1中断溢出使能
TIFR|=BIT(ICF1)|BIT(TOV1); //输入捕获标志,溢出标志
SREG|=BIT(7); //全局中断使能使能
}
//定时器1中断函数
void Second_Ir()
{
TCNT1H=0XE0; //高八位重新赋值
TCNT1L=0XBF; //低八位重新赋值
t++;
if(!(PIND&0x40))
{
ppm=(t-2)*5000/1000;
t=0;
}
}
//主函数
void main()
{
unsigned int co2;
IO_Init();
T1_Normal_Init();
while(1);
}
|