T/C 的输入捕捉单元可用来捕获外部事件,并为其赋予时间标记以说明此时间的发生时刻。外部事件发生的触发信号由引脚ICP1 (PD6)输入,也可通过模拟比较器单元来实现。时间标记可用来计算频率、占空比及信号的其它特征,以及为事件创建日志。当引脚ICP1 上的逻辑电平( 事件) 发生了变化,或模拟比较器输出ACO 电平发生了变化,并且这个电平变化为边沿检测器所证实,输入捕捉即被激发:16 位的TCNT1 数据被拷贝到输入捕捉寄存器ICR1,同时输入捕捉标志位ICF1 置位。如果此时ICIE1 = 1,输入捕捉标志将产生输入捕捉中断。中断执行时ICF1 自动清零,或者也可通过软件在其对应的I/O 位置写入逻辑"1” 清零。读取ICR1 时要先读低字节ICR1L,然后再读高字节ICR1H。读低字节时,高字节被复制到高字节临时寄存器TEMP。CPU 读取ICR1H 时将访问TEMP 寄存器。
操作步骤:
一、捕获输入端口初始化:捕获输入端ICP1(PD6)设为输入,DDRD&=(0< 并使能PD6口的内部上拉电阻,PORTD|=(1< 二、设置定时器的工作模式:TCCR1A=0X00 //普通模式,计数最大值为65535 三、设置分频系数: 1024分频,TCCR1B|=(1< 四、开启捕捉噪声抑制器:TCCR1B|=(1< 五、 设置捕捉触发方式: TCCR1B|=(0< 六、输入捕捉使能: TIMSK|=(1< 七、计数器初始化: TCNT1=0; 八、中断总使能: SREG=0x80; //函数功能:检测ICP1(PD6)脚上的电平变化,(代码来自轻松玩转avr单片机c语言cd) #include
#include
#define uchar unsigned char
#define uint unsigned int
#define beep_0 (PORTD=PORTD&0x7f) //PD7上的蜂鸣器发声
#define beep_1 (PORTD=PORTD|0x80) //PD7上的蜂鸣器不发声
uint count;
/********以下是延时函数********/
void Delay_ms(uint xms)
{
int i,j;
for(i=0;i
}
/********以下是端口初始化函数********/
void port_init()
{
DDRA = 0Xff; //PA口设为输出
PORTA = 0Xff; //PA口输出高电平
DDRD &=(0<
/********以下是定时器1初始化函数********/
void timer1_init()
{
TCCR1A=0X00; //设置为普通模式
TCCR1B |= (1<
TIMSK |= (1 << TOIE1); //溢出中断使能
TCNT1=0; //计数初值
SREG=0x80; //使能全局中断
}
/*********以下是主函数*********/
int main(void)
{
port_init();
timer1_init();
while(1);
}
/********定时/计数器1的输入捕捉中断服务程序********/
#pragma interrupt_handler timer1_CAPT:6
void timer1_CAPT(void) //输入捕捉端口有下降沿电平,则触发中断
{
TCNT1 = 0; // 清零计数寄存器,下一次仍从0开始计数
if(ICR1>23438) //判断两次按键之间的间隔是否大于3s
{
ICR1 = 0; //清零输入捕捉寄存器
PORTA =~PORTA; //LED状态翻转
}
}
/********定时/计数器1的溢出中断服务程序********/
#pragma interrupt_handler timer1_OVR:10
void timer1_OVR(void)
{
beep_0;
Delay_ms(100);
beep_1;
Delay_ms(100);
}
上一篇:标准AVR单片机模拟I2C总线的主机程序
下一篇:5. avr定时器/计数器1 快速PWM输出 (比较输出--快速PWM模式)
推荐阅读最新更新时间:2024-03-16 15:47
设计资源 培训 开发板 精华推荐
- TI有奖直播|借助Sitara™ AM263x MCU 创造电气化的未来
- USB Type-C你敢跟我聊成功人生,我就跟你聊引脚定义!
- 直播已结束【解锁 TI Sitara AM2x MCU 在电机驱动中的新可能】
- 报名2019年ST全国巡回研讨会,赢三重好礼
- 直播|基于英特尔® Agilex™ FPGA F-Tile的以太网硬核IP详解及如何使用oneAPI对FPGA编程
- 看专题答题赢好礼!PI 稳定可靠的TOPSwitch-JX开关电源IC
- EEWorld Datasheet 伴你同行!快来领取200芯积分福利啦~
- TI MCU 推新了!八月直播揭秘新特性~报名观看赢好礼!
- 福禄克有奖直播|数据采集器的基础知识及其应用和校准
- 有奖直播|ADI多参数光水质分析平台