//EX6AVR ATmega8A 16位定时器TC1CTC-模式12//author:QI小米粥//data:2018.3.15#include#includechar a=0;
void init(void)
{
DDRB |=0X16;//oca,ocb设置位输出
PORTB &=~0X16;//初始是低电平
TCCR1A |=0X50;//输出模式位反转
TCCR1A &=~0XA0;
TCCR1A &=~0X03;//选择工作模式12
TCCR1B |=BIT(3);
TCCR1B |=BIT(4);
TCCR1B &=~BIT(2);//tc1频率8M/64=128KHz
TCCR1B |=0x03;
ICR1=0X0000;//设置top值
//OCR1B=0X8000;//设置OCR1B的匹配中断值
TCNT1=0X0000;//设置初始的计数器值
SREG |=BIT(7);//全局中断打开
TIMSK |=BIT(4);//0ca中断打开
TIMSK |=BIT(3);//OCB中断打开
}
#pragma interrupt_handler oca:7
void oca(void)
{
if(a)
{
ICR1 +=0X2000;
a=0;
}
else
{a=1;}
if(PORTB&BIT(4))
{PORTB &= ~BIT(4);}
else
{PORTB |=BIT(4);}
}
#pragma interrupt_handler ocb:8
void ocb(void)
{
}
void main(void)
{
init();
}
网友评论