/*定时器T0测试程序 */
/*目标器件:ATmega168 */
/*晶振:RC 8MHZ */
TCCRn定时计数器控制寄存器
TCNTn计数器,不断的计数
TIMSK定时计数器中断屏蔽寄存器
TIFR中断标志寄存器
/***************************************************************************/
/*********************************包含头文件********************************/
#include <_iom88to328v.h>
#include <macros.h>
/****************************************************************************
函数功能:端口初始化程序
入口参数:
出口参数:
****************************************************************************/
void port_init (void)
{
DDRB=0XFF;
PORTB=0XFF;
}
/****************************************************************************
函数功能:定时器初始化程序
入口参数:
出口参数:
****************************************************************************/
void timer0_init(void)
{
TCCR0B = 0x00; //stop
ASSR = 0x00; //set async mode 设置异步模式
TCNT0 = 0x3c;
OCR0B = 0x00;
TCCR0B = 0x05; //1024分频
}
/****************************************************************************
函数功能:定时中断服务程序
入口参数:
出口参数:
****************************************************************************/
#pragma interrupt_handler timer0_ovf_isr:17
// #define iv_TIMER0_OVF 17
void timer0_ovf_isr(void)
{
TCNT0 = 0x3c;
PORTB ^= 0x01;
}
/****************************************************************************
函数功能:主程序
入口参数:
出口参数:
****************************************************************************/
void main (void)
{
CLI(); //disable all interrupts
port_init();
timer0_init();
MCUCR = 0x00;
TIMSK0 = 0x01; //T0溢出使能
SEI(); //enable interrupts
}
完整资料打包(含仿真):