首页 > 编程知识 正文

avr单片机下载线(我带你装b我带你飞)

时间:2023-05-03 08:56:42 阅读:77462 作者:1392

上一篇文章主要介绍了328p外部中断的常见知识点,现在我们用上面的知识点直接写demo小程序。 使用名为INT0的外部中断控制一个led的闪烁。

不用说,直接上缉毒局:

让我简单说明一下:

这里使用的是使用winavr进行编辑和编译,并生成的hex文件。 然后,使用的usbasp与名为progisp的写入软件合作,将软件写入了328p。 当然,在上一个教程中,我使用了一个名为avr fighter的烧写软件,但我发现progisp更容易使用。

我首先用了三个winavr上的头文件。 一个是对io的操作,另一个是对中断的操作,另一个是延迟函数的头文件。 让我来说明一下这个头文件。 #include util/delay.h和winavr中的延迟有四个函数: _delay_loop_1。 _delay_loop_2(; _delay_us (; _delay_ms (; 看字面应该都能理解。 我不会自己调查。

首先,让我们来看看外部中断的初始化函数。 voidint0_init(void )。 其中,首先打开全局中断,在中断中启用,然后设定中断的触发方式,不是特别简单吗? 不,打开中断,其实有两个开关。 一个是全局中断使能,另一个是INT0的中断使能。 实际上看看内部的电路就知道为什么是这样了。

让我们来看看main函数。 首先是初始化管脚。 与INT0对应的管脚是PD2。 我们的指示灯连接到PB5。 那么,确实,PD2是输入,PB5是输出。 其实,PD2为什么没有关系。 然后,调用中断的初始化函数,然后进入循环内部,执行该启动动作来触发中断。 触发中断后,进入中断处理函数中。

让我们看看中断处理程序。 中断到来时,反转PB5的电平,实际上实现了闪烁的变换。

好的,就说这些吧。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。