Atmega168 延时函数晶振频率的设置方法


    本文介绍,在Atmel Studio环境中,更改延时函数(宏)的晶振频率的方法。

    在Atmel Studio中,可以使用
_delay_us(x)宏和 _delay_ms(x)进行精准延时,但是在使用这2个宏之前必须设置当前的晶振频率,本日志介绍其设置方法。

    1、在项目上点击右键,选择属性
    图片 

    2、在属性栏中,选择工具链,然后选择“Symbols”,然后将F_CPU宏,更改为相应的晶振频率即可。 
图片   

原创性文章,转载请注明出处  http://user.qzone.qq.com/2756567163  
  CSDN:http://blog.csdn.net/qingwufeiyang12346
ATMEGA168是一款AVR微控制器,它有多个中断源,每个中断源都有对应的中断向量表(IVT),当中断源发生时,程序会跳转到对应的中断向量表中执行相应的中断服务函数。 编写ATMEGA168中断服务函数的步骤如下: 1. 在程序中定义中断服务函数,函数名与中断向量表中对应的中断向量名相同。例如:TIMER1_COMPA_vect是Timer1比较A中断的向量名,对应的中断服务函数也应该是TIMER1_COMPA_vect。 2. 在函数中编写中断服务程序。中断服务程序需要注意的是,由于中断服务程序中不能有太多的代码,所以应该尽量简洁,避免使用过多的循环、延时等操作。 3. 在程序的初始化部分,打开中断源,并且设置中断服务函数的触发条件。例如:如果需要开启TIMER1_COMPA中断,则应该在初始化部分设置TIMER1_COMPA中断的触发条件,并且打开TIMER1_COMPA中断允许。 以下是一个ATMEGA168中断服务函数的示例,用于处理Timer1比较A中断: ``` #include <avr/io.h> #include <avr/interrupt.h> ISR(TIMER1_COMPA_vect) { // 中断服务程序 } int main(void) { // 初始化部分,设置Timer1比较A中断的触发条件,并且打开Timer1比较A中断允许 sei(); // 开启全局中断允许 while (1) { // 主程序循环 } } ``` 注:在ATMEGA168中,中断向量表的地址为0x0000,每个中断向量占用两个字节。在程序中定义中断服务函数时,需要使用 `ISR()` 定义来告诉编译器这是一个中断服务函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

snmplink

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值