AVR定时器T1中断示例程序使用AVR的定时器T1做1S定时,并使用PD口的LED指示灯做简单指示。
#include
#include
#define DISP_DDR DDRD
#define DISP_PORT PORTD
/*-----------------------------------------------------------------
程序名称:定时器1初始化程序
程序功能:
注意事项:基于7.3728M晶振
提示说明:晶振不要买到假的,要不然,调不出来还以为电脑有鬼!
输 入:
返 回:
--------------------------------------------------------------------*/
void timer1_init(void)
{
TCCR1B = 0x00; //stop timer
TCNT1H = 0xE3; //设置 TC1 的 计数寄存器 高8位值,基于7.3728M晶振
TCNT1L = 0xE1; //设置 TC1 的 计数寄存器 低8位值,基于7.3728M晶振
//OCR1AH = 0x1C; //设置 TC1 的 输出比较寄存器A 高8位值
//OCR1AL = 0x20; //设置 TC1 的 输出比较寄存器A 低8位值
//OCR1BH = 0x1C; //设置 TC1 的 输出比较寄存器B 高8位值
//OCR1BL = 0x20; //设置 TC1 的 输出比较寄存器B 低8位值
//ICR1H = 0x1C; //设置 TC1 的 输入捕获寄存器 高8位值
//ICR1L = 0x20; //设置 TC1 的 输入捕获寄存器 低8位值
TCCR1A = 0x00;
TCCR1B = 0x05; //设置TC1 为 CLK/1024分频,启动TC1
MCUCR = 0x00; //设置 MCU 的 控制寄存器
GICR = 0x00; //设置 中断控制寄存器
TIMSK = 0x04; //设置 定时计数器 的 屏蔽寄存器
//SEI(); //enable interrupts
}
/*--------------------------------------------------------------------
程序名称:定时器1中断服务程序
程序功能:
注意事项:
提示说明:
输 入:
返 回:
--------------------------------------------------------------------*/
#pragma interrupt_handler timer1_ovf_isr:9
void timer1_ovf_isr(void)
{
TCNT1H = 0xE3; //reload counter high value
TCNT1L = 0xE1; //reload counter low value
DISP_PORT++; //每加1S,显示加1
}
/*--------------------------------------------------------------------
程序名称:
程序功能:
注意事项:没什么好注意的,不要直接对 单片机 控制板加220V电压就行了!
提示说明:
输 入:
返 回:
--------------------------------------------------------------------*/
void main(void)
{
DISP_DDR = 0XFF; //设置显示口为输出
timer1_init();
SEI();
while(1);
}
关键字:AVR 定时器 中断
引用地址:
AVR定时器T1中断示例程序
推荐阅读最新更新时间:2024-03-16 15:49
MSP430F5438 定时器总结
1.MSP430F5438有三个定时器 TA0 TA1和TB,定时器的功能略有区别。 2.对于定时器TA1而言,有两个中断向量地址,其中比较匹配通道0具有单独的中断向量 3.MSP430中断向量的名称和TA0 TA1很难对应起来,需要通过中断向量地址来确认。 #define TIMER1_A1_VECTOR (48 * 2u) /* 0xFFE0 Timer1_A3 CC1-2, TA1 */ #define TIMER1_A0_VECTOR (49 * 2u) /* 0xFFE2 Timer1_A3 CC0 */ #define TIMER0_A1_VECTOR (53 * 2u) /* 0xFFEA T
[单片机]
AVR编程感悟
公司的项目中用的单片机都是avr,有Atmega128,Atmega2561,和刚刚用的Attiny2313,玩了两三个月了,这三个单片机也玩熟了,因之前都是写上层应用的,一些编程的观念,特别是在玩完2313后有了很大的改变,把最近的一些编程中认识到的问题及想法先记录下来,当个备忘录吧。 首先是 封装 的思想 先说下原先的观念吧,原先参加的项目比较大,芯片资源也很丰富,RAM都是几十兆的,ROM都是过百兆的,自己只负责一个模块的,这方面特别的重视,包括一些用到的变量,都根据实际用途进行封装,这样便于维护,也便于编写程序,同时也便于后期扩展,变量的封装对应要有相应的函数封装,将所有的全局变量的操作都封装起来,会提高程序的灵活度以及
[单片机]
正确配置AVR单片机的熔丝位
对AVR熔丝位的配置是比较细致的工作,用户往往忽视其重要性,或感到不易掌握。下面给出对AVR熔丝位的配置操作时的一些要点和需要注意的相关事项。 (1)在AVR的器件手册中,对熔丝位使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态,“Unprogrammed”表示熔丝状态为“1”(禁止);“Programmed”表示熔丝状态为“0”(允许)。因此,配置熔丝位的过程实际上是“配置熔丝位成为未编程状态“1”或成为已编程状态“0””。 (2)在使用通过选择打钩“√”方式确定熔丝位状态值的编程工具软件时,请首先仔细阅读软件的使用说明,弄清楚“√”表示设置熔丝位状态为“0”还是为“1”。
[单片机]
CEPARK AVR单片机 之HC595驱动数码管显示
这里我用的CEPARK 的M64 AVR开发板,这一课的重点是学会如何使用74HC595来驱动数码管。 74HC595是具有8位移位寄存器和一个存储器,三态输出功能。移位寄存器和存储器是分别的时钟。数据在SHcp的上升沿输入,在STcp的上升沿进入的存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7 ),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能 OE时(为低电平),存储寄存器的数据输出到总线。 引脚说明: QA--QH: 八位并行输出端,可以直接控制数码管的8个段。 QH': 级联输出端。我将它接下
[单片机]
AVR单片机的T0使用
本文介绍ATmega 16 单片机的T0使用 M16中的T0是8位定时器/计数器 以下内容摘至ATmega 16 Datasheet 注意,使用前要将OC0设置输出,上拉电阻 使用CTC方式产生38K方波。红外常用的 void timer0_init(void) //CTC模式输出38KHz方波,用于红外检测 { OCR0 = 11; //设定TOP值 //TOP=7372800/(2*8*38000)-1=11 选11 38.397KHz(13uS) TCCR0 = (1 WGM01)|(0 WGM00)|(0 COM01)|(1 COM00)|(0 CS02)|(1 CS01)|(0 CS00); //
[单片机]
c51中断计数器
#include reg51.h #define uchar unsigned char #define uint unsigned int #define ulong unsigned long uint tc; static uint i; uchar ledbuff ; uchar ledchar ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void init_en() { EA = 1; ET1=1; ET0=1; TMOD = 0X51; TH0 = 0XFC; TL0 = 0X67; TR0=1; TR1=1; } void cl
[单片机]
uClinux下中断驱动的I/O方式
引 言 在32位微处理器逐渐成为嵌入式系统主流的同时,嵌入式应用也变得越来越复杂。许多嵌入式系统都不得不借助于专用的操作系统来支撑自己的应用。uClinux作为类Unix操作系统,继承了Linux的各种优秀的品质,成为首选的嵌入式系统的操作系统。 为自己的设备在操作系统下添加驱动程序,是嵌入式设计必不可少的部分。针对不同的设备类型,选择合适的驱动程序的模式,同样也是十分重要的。通常的设备驱动采用直接I/O的方式,如存储器、看门狗等;而对于象网络这样的数据流设备的驱动,则应该用到中断机制。 本文以uClinux为背景,以一种数据流设备为目标,介绍中断驱动的I/O设备驱动的开发。 1 应用背景 1.1 硬件描述
[嵌入式]
片上系统中断机制的可靠性设计
1 引言 在嵌入式系统应用中,异步实时交互系统占了很大部分,这就要求系统对数据或者控制信号的输入具有较高的响应速度。相对查询方式而言,中断方式具有响应速度快、效率高等特点,因而在嵌入式系统中广泛采用。随着VLSI进入深亚微米时代,嵌入式系统趋向于片上系统(SOC),中断控制部分不再由独立的通用中断控制芯片构成,而是由系统开发者根据特定的中断类型设计专用的中断控制逻辑。 目前,对于中断控制器的设计方法以及中断的快速转移等已经有大量的研究,但是对于中断机制的可靠性问题研究较少。事实上,中断机制的可靠性问题是不可忽视的,因为Windows、Unix和Linux等操作系统中,中断的发生可以导致系统由用户态进入核心态,如果中断机制存在问题
[嵌入式]