查看: 1218|回复: 0
打印 上一主题 下一主题

关于定时器T0溢出中断验证

[复制链接]
跳转到指定楼层
沙发
发表于 2014-7-28 17:14:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/****************************************
*实验目的:熟悉定时器溢出中断编程
*设    计:翟志刚
*日    期: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;
        }
}






回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

快速回复 返回顶部 返回列表