AVR技术william hill官网
直播中

zhangtaotao71

12年用户 393经验值
擅长:嵌入式技术
私信 关注
[AVR问答]

ATMage16 Proteus 7定时器0的CTC模式

`
相关寄存器:TCCR0:位3和位6用来设置模式。普通模式相位修正PWM,CTC,快速PWM模式。配置成CTC模式。位4和位5用来设置OC0脚(PB3)输出电平的模式。
tiMSK:中断屏蔽寄存器。0位定时器0溢出中断使能位。1定时器输出比较中断。
OCR0:输出比较寄存器,当设置为非普通模式后,此寄存器就会始终与TCNT0(定时器计数器)相互比较。
说明:CTC模式,可以设置输出一个1/2占空比的波形。可通过示波器观察OC0引脚输出电平情况。
#include//8位的定时器
typedef unsigned int uint;
void CTC_Init(void)
{
     TCCR0|=(1<<3);
     TCCR0&=~(1<<6);//3,6位01设置为CTC模式非PWM模式
     TCCR0|=(1<<4);
     TCCR0&=~(1<<5);//4,5位设置当TCNT0与OCR0相等时,OC0脚输出取反
     TCCR0|=(1<<2);
     TCCR0&=~(1<<1);
     TCCR0&=~(1<<0);//0,1,2设置定时器的分频
     TCNT0=0x00;
     OCR0=0xfc;//设置输出比较寄存器的值
     TIMSK|=(1<<1);//使能输出比较匹配中断
     SREG|=(1<<7);//设置全局中断
     DDRB=0xff;
     PORTB=0xff;//OC0脚对应PB口的PB3脚,设置B口为输出方向
}
void main(void)
{
    CTC_Init();//定时器初始化
while(1);
}
#pragma interrupt_handler CTC_isr:20
//比较匹配中断不做任何操作
void CTC_isr(void)
{
    ;
}
` CTC.PNG

回帖(1)

hua2002

2013-10-31 09:44:09
{:20:}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分