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

发布者:科技创客最新更新时间:2020-02-25 来源: eefocus关键字: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  溢出中断) 引用地址:AVR应用笔记二(定时器0溢出中断)

上一篇:基于AVR单片机与DS18B20的实时温度采集与分析系统
下一篇:基于ATMEL AVR单片机的居家安全卫士系统实现

推荐阅读最新更新时间:2024-11-02 22:38

基于AVR单片机的多功能电源设计
随着 嵌入式 系统设计技术的发展,在设计和仿真中,系统工程师对 电源 的要求也越来越高。在 嵌入式 系统设计是使用8031 单片机 和74系列集成 电路 时,所有使用74系列集成 电路 的电路板都使用单一的5 V 电源 供电就可以了。当时的供电电源部分不是一个需要太多注意的单元,基本上5 V的电源能满足所有的数字 集成电路 设计的需要。而近几年来,随着技术的发展, 集成电路 里的三极管变得越来越小并且工作的电压越来越低,使得嵌入式系统开发的重点从系统的速度,转到低功耗设计上。因此在同一个嵌入式系统中,存在多种不同电压的电源供电,从低于1 V到高于5 V都存在。而且在系统的稳定性和可靠性测试时,还要 模拟 不同的电源故障情况下,比如
[电源管理]
利用单片机AVR自制高压并行编程器
  前阵子手上刚好有几片锁死了的M8,估计连RESET也被禁用了,这些芯片已经无法通过下载线来恢复了。为了减少损失,故在网上一阵搜索,原来AVR的芯片的熔丝都是可重复编程的,不像OTP熔丝,一次配置了就不能修改了,只不过不是需要高压编程器罢了(12v的,不是ISP下载线能胜任的),上淘宝网看了一下,成品高压编程器的价格可不菲,况且我也不是经常用,平时有ISP下载线也就够用了,而且也方便,不用从目标板上取下芯片即可编程,据现在的情况看来,自己做一个简单的高压编程器是势在必行了,并且为了推扬我们的DIY精神,我找了一些资料和软件,准备自己制作高压并行编程器了,经过一阵子的捣鼓,编程器终于做好了,现与大家分享一下制作过程和一些心得,供有兴
[单片机]
利用单片机<font color='red'>AVR</font>自制高压并行编程器
AVR (ATMEGA)软件滤波方法程序(限值平均滤波法)
int da ta; int shuzu ={0x00,0x00,0x00,0x00,0x00,0x00,0x00}; /****************限值平均滤波法****************/ /*********去最大值最小值,剩下的取平均*********/ int filter(int newdata, uchar n) { int max, min, sum; uchar i; shuzu =newdata; max=shuzu ; min=shuzu ; sum=shuzu ; for(i=n-1; i!=0; i--) { if(shuzu max)max=shuzu ; e
[单片机]
<font color='red'>AVR</font> (ATMEGA)软件滤波方法程序(限值平均滤波法)
AVR单片机(ATMEGA16)串行收发程序
#include iom16v.h #include macros.h #define uchar unsigned char #pragma interrupt_handler SerialService:12 uchar rtemp,sflag; void SerialInit(void) { UCSRB=(1 RXCIE)|(1 RXEN)|(1 TXEN); //置一接收结束中断使能、接收使能、发送使能,并且其他位为0 UCSRC=(1 URSEL)|(1 UCSZ1)|(1 UCSZ0); //置一寄存器选择位、设置字符位数为8位,结束位1位,并且其他位为0 UBRRH=0; UBRR
[单片机]
<font color='red'>AVR</font>单片机(ATMEGA16)串行收发程序
AVR单片机电压表程序
AVR电压表程序: #include iom16v.h #include macros.h #define uchar unsigned char #define uint unsigned int #define setb(val,bitn) (val|=(1 (bitn)))//设置某IO口某位为1 #define clr(val,bitn) (val&=~(1 (bitn)))//设置某IO口某位为0 #define get(val,bitn) (val&(1 (bitn)))//读取某位状态如 uchar shi=20,fen=39,miao,a=0xff,num; #pragma data:code//定义程序存在RO
[单片机]
基于AVR单片机CAN总线的电梯召唤显示板设计
随着现代社会的发展,科学技术的进步,出现了众多高层建筑和智能建筑。电梯,作为高层建筑内部一种重要的交通工具,其应用规模日益扩大。而作为电梯系统中必不可少的一部分,电梯召唤显示板(简称电梯外呼板)的应用也随之剧增。 电梯外呼板应用于每层楼的电梯门外,供乘客及电梯维保人员使用。电梯外呼板将乘客及维保人员的需求信息通过CAN总线传达给电梯主板,电梯主板接收信息并执行相应的操作。同时,电梯主板将电梯的实时运行信息通过CAN总线传递给电梯外呼板,通过外呼板LED显示出来,供乘客参阅。 AVR单片机具有高可靠性、功能强、高速度、低功耗和低价位的特点,本系统选用了高档ATmega列AVR单片机ATmegal6。它具有先进的RI-SC结构,具
[单片机]
基于<font color='red'>AVR</font>单片机CAN总线的电梯召唤显示板设计
基于AVR和TMS320VC5402的HPI接口通信设计
1.前 言 TMS320VC5402(简称VC5402)是TI公司的DSP处理器,具有高级的数据处理结构和丰富的片内资源。但是VC5402 DSP内部不具有可编程的非易失片内存储器,所以为了保存程序代码和参数表,一般情况下要外扩一片存储器。VC5402可用的通用输入输出口(I/O port)少,软件上对I/O口的控制不灵活,没有对I/O口按位控制的指令,且具有流水线延迟。多不具有通用的通信接口如UART接口,CAN总线接口等,对控制的支持功能较少。AVR(Advanced RISC Architecture)单片机是ATMEL公司的flash型单片机,广泛应用于数据处理和控制领域,具有丰富的片内资源和灵活的接口形式。片内往
[单片机]
基于<font color='red'>AVR</font>和TMS320VC5402的HPI接口通信设计
基于AVR单片机的安全工器具监控系统设计
众所周知,安全是电力企业一个永恒的主题,而安全工器具的好坏,将直接影响着电力企业在生产过程中的人身和设备安全。笔者提出了一种基于AVR单片机的安全工器具监控系统的设计方案,主要是对安全工器具的离就位状态信息、有效使用期限和安全工器具柜内的温湿度状况等进行监控,可以根据实现安全工器具柜内温湿度的自动调节,能够自动记录安全工器具的相关信息。本文首先阐述了系统的总体结构,然后详细论述了系统的硬件设计和软件设计。 1 安全工器具监控系统的总体结构 1.1 系统结构 本文所设计的安全工器具监控系统主要分为下位机数据采集和上位机数据管理两个部分,两者之间通过网络进行通信。 系统首先通过数据采集板对安全工器具柜的相关量进行采集,然后将
[单片机]
基于<font color='red'>AVR</font>单片机的安全工器具监控系统设计
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved