编程点滴:AVR timer0 配置模块

发布者:大头玩家最新更新时间:2016-10-21 来源: eefocus关键字:AVR  timer0  配置模块 手机看文章 扫描二维码
随时随地手机看文章
AVR timer0 的配置模块,给定期望的定时器中断频率,并定义好中断处理函数,模块可自动完成配置工作。

模块由主体程序及头文件组成。



/* *************************************************
* File Name: timer0_set.h
* Function: AVR定时器0配置模块
* Description: 指定期望的定时器中断频率,及中断处理函数,
模块可自动完成配置
* Authon & Date: Joshua Chan, 2012/04/01
* *************************************************/
#ifndef _TIMER0_SET_H
#define _TIMER0_SET_H

#define COUNT_MAX 0xFF

/* 中断处理函数由外部定义 */
extern void timer0_isr(void);

/* 配置8位定时器timer0比较匹配中断使能
* @freq: 定时器中断发生频率
*/
extern void timer0_comp_init(int freq);

extern void timer0_enable(void);

extern void timer0_disable(void);

#endif



/* *************************************************
 * File Name: timer0_set.c
 * Function:  AVR定时器0配置模块
 * Description: 指定期望的定时器中断频率,及中断处理函数,
                模块可自动完成配置
 * Authon & Date: Joshua Chan, 2012/04/01
 * *************************************************/
#include 
#include 
#include 
#include 
#include 
#include "constant.h"
#include "timer0_set.h"
#include "uart_io.h"

/* 寄存器配置与预分频值对应表 */
__flash static int prescaling[][2] = {
    {0, 0},
    {1, 1},
    {2, 8},
    {3, 32},
    {4, 64},
    {5, 128},
    {6, 256},
    {7, 1024},
};

/* 定义timer0比较匹配中断处理函数 */
#pragma vector = TIMER0_COMP_vect
__interrupt void timer0_isr_orig(void)
{
 /* 中断处理函数由外部传入 */
    timer0_isr();
}

/* 根据初步计算值选择预分频值 */
static unsigned char prescale_index(int num)
{
    unsigned char i;

    for (i = 0; i < 8; i++)
        if (num <= prescaling[i][1])
            return i;
    return 0;
}

/* 配置8位定时器timer0比较匹配中断使能
 * @freq: 定时器中断发生频率
 */
void timer0_comp_init(int freq)
{
    unsigned char index;
    int prescale_tmp;
    int ocr0;

    prescale_tmp = (FOSC / freq / COUNT_MAX); /* 初步计算预分频值 */
    index = prescale_index(prescale_tmp);   /* 根据上一步结果选择预分频值 */
    ocr0 = ((FOSC / prescaling[index][1] / freq) - 1); /* 计算比较值 */

 /* 根据上面的运算结果配置寄存器 */
    TCCR0 = (1<
 
关键字:AVR  timer0  配置模块 引用地址:编程点滴:AVR timer0 配置模块

上一篇:编程点滴:AVR的I/O端口模拟UART串口测试程序
下一篇:编程点滴:AVR UART I/O 功能模块

推荐阅读最新更新时间:2024-03-16 15:16

无线红外模块-AVR程序代码
#include  #include  #define uint unsigned int  #define uchar unsigned char    // Alphanumeric LCD Module functions #asm    .equ __lcd_port=0x18 ;PORTB #endasm #include      uchar startflag=0,bitnum,irtime,irprosok,irreceok; uchar irdata ,dis ,ircode ;   // External Interrupt 0 service routine interrupt   void ext_int0
[单片机]
AVR 基本硬件线路与分析
单片机最小系统 单片机最小系统设计 AVR基本硬件线路设计与分析 (ATmega16功能小板) AVR DB-CORE Ver2.3 Atmega16开发板 本站商城提供本最小系统销售: 99元 AVR学习套件 AVR学习板 AVR开发板 easyavr m16 , ATmega16 开发板 AVR学习板 Mega16 核心板 (特价) 。 基本的AVR硬件线路,包括以下几部分: 1。复位线路 2。晶振线路 3。AD转换滤波线路 4。ISP下载接口 5。JTAG仿真接口 6。电源 7。串口电路 下面以本网站推荐的AVR入门芯片 ATmega16L-8AI 分析上述基本线路。(-8AI表示8M频率的TQFP贴
[单片机]
<font color='red'>AVR</font> 基本硬件线路与分析
基于AVR的笔记本电池检测仪
引言 普通电池仅有作为电源向负载供电的功能.而智能电池是由电池组、电池管理芯片、充放电电路、保护电路等共同组成的。智能电池不仅可以提供电源,而且由于电池管理芯片中内置了微处理器和通信接口,它还可以向外部提供电池当前电压、当前电量、温度、门槛电压、充放电次数、生产厂商、生产日期等动态信息和设计信息。笔记本电池就是一种智能电池.它采用SMBUS向操作系统提供当前电池电量的余量、还能使用多长时间等数据。 笔记本电池在生产完成后。要老化电池。也就是测试电池是否能够正常工作。检测的步骤通常分步进行.首先读取电池的各种设计信息检查是否正确.其次对电池充放电检查是否可充放.最后校正电池电压、电流和温度。本文提出一种自动流程的笔记本电池检测仪.
[单片机]
基于<font color='red'>AVR</font>的笔记本电池检测仪
AVR单片机从左到右LED流水灯C语言程序
AVR单片机第一个实验,从左到右的LED流水灯C语言程序,编程环境是WinAVR,8MHZ晶振。 #include avr/io.h //相关库 #include util/delay.h typedef unsigned int uint; typedef unsigned char uchar; uchar const tab ={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; void main(void)//主函数 { PORTB=0xff;//PB口输出为高电平 DDRB=0xff;//高PB口为输出 uchar a;//定义变量 while(1)//无限
[单片机]
建立一个属于自己的AVR的RTOS(第七篇:占先式内核)
第七篇:占先式内核(只带延时服务) 当大家理解时间片轮番调度法的任务调度方式后,占先式的内核的原理,已经伸手可及了。 先想想,占先式内核是在什么地方实现任务调度的呢?对了,它在可以在任务中进行调度,这个在协作式的内核中已经做到了;同时,它也可以在中断结束后进行调度,这个问题,已经在时间片轮番调度法中已经做到了。 由于中断是可以嵌套的,只有当各层嵌套中要求调度,并且中断嵌套返回到最初进入的中断的那一层时,才能进行任务调度。 #include avr/io.h #include avr/Interrupt.h #include avr/signal.h unsignedcharStack ; registerun
[单片机]
一种基于AVR的新型防汽车追尾安全装置的设计
1 引言   随着我国汽车保有量逐年增加,高速公路的发展使得汽车的行驶速度越来越快。车流量也越来越大,导致高速公路交通事故频频发生,其发生率甚至达到普通公路的4 倍,且有上升趋势。在高速公路所发生的交通事故中尤以汽车追尾居多,约占30%~40%,而在这些事故中,80%以上的事故是由于司机反应不及时或者判断失误引起的。由于目前只有高档车型才配有防碰撞装置,而且以往设计中只单纯考虑在车前或车后安装防碰撞装置,不尽全面,所以设计一套低成本、通用性好的汽车防车前车后追尾的安全装置具有广阔的应用和市场前景。因此。这里提出一种基于AVR的新型防汽车追尾安全装置设计。 2 安全装置组成和硬件电路设计   安全装置硬件电路设计主要由单片机控
[汽车电子]
一种基于<font color='red'>AVR</font>的新型防汽车追尾安全装置的设计
icc avr LCD1602显示屏程序
入口参数说明: // control port //#define SET_RS sbi(PORTB,5) //#define CLR_RS cbi(PORTB,5) //#define OUT_RS sbi(DDRB,5) //#define SET_RW sbi(PORTB,6) //#define CLR_RW cbi(PORTB,6) //#define OUT_RW sbi(DDRB,6) //#define SET_E sbi(PORTB,7) //#define CLR_E cbi(PORTB,7) //#define OUT_E sbi(DDRB,7) // data port //#define SET_D4
[嵌入式]
基于AVR单片机的船舶气象仪测试系统的设计与实现
摘要:针对船舶气象仪保障维修而设计的船舶气象仪测试系统,包括信息处理终端、主仪器检测模块、传感器检测模块,各个模块都采用基于AVR单片机的嵌入式系统,模块之间通过CAN总线进行通信。结果表明,船舶气象仪测试系统能够快速检测船舶气象仪故障,与单纯依靠人工方式排查故障相比,故障检测时间缩短了60%以上。 关键词:船舶气象仪保障维修;船舶气象仪测试系统;AVR单片机;CAN总线 船舶气象仪是船舶导航系统设备之一,可测量船舶所在位置海区的风速、风向、温度、湿度、气压等多项气象要素,可向船舶的导航系统传送实时的气象参数。船舶气象仪一旦出现故障,将会影响船舶操作人员对各种气象要素的估计和判断,甚至导致航行船舶失控、搁浅、触礁、倾覆等严重
[单片机]
基于<font color='red'>AVR</font>单片机的船舶气象仪测试系统的设计与实现
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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