|
/****************************************
*实验目的:熟悉定时器溢出中断编程
*设 计:翟志刚
*日 期:2014-07-28
****************************************/
#include <iom16v.h>
#include "cfg.h"
void main(void)
{
port_init();
timer0_init();
while(1)
{
};
}
/****************************************
*程序名称:各功能函数
*设 计:翟志刚
*日 期:2014-07-28
****************************************/
#include <iom16v.h>
int counter = 0; //计数值
/*端口初始化*/
void port_init(void)
{
DDRB=0xFF; //PB口配置为输出
PORTB=0xFF; //PB口初始值为"1"
}
/*定时器0初始化*/
void timer0_init(void) //因为定时时间太短,看不到灯的变化
{
SREG = 0x80; //使能全局中断
TIMSK |= (1<<TOIE0); //使能T0溢出中断
TCCR0 = 0x01; //配置定时器工作普通模式
TCNT0 = 0x83; //给定时器赋初值
}
/*定时器0中断服务程序*/
#pragma interrupt_handler timer0_ovf:10
void timer0_ovf(void)
{
counter++;
if(counter == 16000) //对PB口取反
{
counter = 0;
PORTB = ~PORTB;
}
}
|
|