AVR应用笔记二(定时器0溢出中断)

来源:本站
导读:目前正在解读《AVR应用笔记二(定时器0溢出中断)》的相关信息,《AVR应用笔记二(定时器0溢出中断)》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《AVR应用笔记二(定时器0溢出中断)》的详细说明。
简介:本文主要为关于定时器0溢出中断的程序处理。

//---------------------------------------------------------------------

//Copyright(c) 博控设计joecongmin 2010 All righr reserved

//文件名:timer0_test1.c

//文件描述:用定时器1完成100US定时,一秒钟到后取反PC1口

//外接的LED灯,实现LED灯的闪烁。

//实验目的:学习AVR 单片机的定时器0用作定时器用的方法

//当前版本号:V1.0

//完成时间:2010-4-7 13:02:45

//修改记录:

//修改时间:

/起草时间:2010-4-7 8:45:01

//--------------------------------------------------------------------

//----------------------------start------------------------------------

#include"iom88v.h"

#define uint16 unsigned int

#define uchar unsigned char

void delay (uint16 i);

void flash_led(void);

void timer0_init(void);

uchar timer_cnt = 0;//定时器1计数个数

void main(void)

{

DDRC |= 0x02; //PC1 output

timer0_init();

while(1)

{

//flash_led();

}

}

//-------------------------------------------------------------------

//函数原型:void delay (uint16 i);

//入口参数:uint16 i:延时变量

//出口参数:无

//功能:实现延时功能

//-------------------------------------------------------------------

void delay (uint16 i)

{

uchar j;

while(i--)

{

for(j=125;j>0;--j)

{

;

}

}

}

//--------------------------------------------------------------------

//

//功能:非定时下实现LED灯的闪烁

//--------------------------------------------------------------------

void flash_led(void)

{

PORTC |= 0x02; //PC1 = 1;

delay(3000);//

PORTC &= 0xfd; //PC1 = 0;

delay(3000);//

}

/*-----------------------------------------------------------------

函数名称: void timer0_init(void)

函数功能: 定时器0初始化 256预分频 定时一秒

参 数:

返 回 值: 无

-----------------------------------------------------------------*/

void timer0_init(void)

{

TCCR0A &= 0xfc; //11111100

TCCR0B = 0x05; //1024分频

SREG |= 0x80; //全局中断使能

TIMSK0 =0x01; // 定时器0溢出中断使能

}

//--------------------------------------------------------------------

//

//

//定时器0中断服务子程序,工作在普通计数模式1024分频,初值为0每256拍溢出

//中断频率 8000000/1024/256 =30.5HZ

//-------------------------------------------------------------------

#pragma interrupt_handler timer0_ovf_isr:17

void timer0_ovf_isr(void)

{

timer_cnt++;

if(timer_cnt>=15)//30.5HZ 15分频 =2HZ即亮0.5秒灭0.5秒

{

timer_cnt = 0;

if((PORTC &= 0x02)==0x02)

PORTC &= 0xfd; //PC1 = 0;

else

PORTC |= 0x02;

}

}

提醒:《AVR应用笔记二(定时器0溢出中断)》最后刷新时间 2024-03-14 00:54:44,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《AVR应用笔记二(定时器0溢出中断)》该内容的真实性请自行鉴别。