第4讲AVR单片机中断.ppt
《第4讲AVR单片机中断.ppt》由会员分享,可在线阅读,更多相关《第4讲AVR单片机中断.ppt(17页珍藏版)》请在三一文库上搜索。
1、1,外部中断应用实例,例7.1 用按键控制的一位LED 数码管显示系统 1) 硬件电路 图7-2 为硬件原理图。其中LED 数码管的控制显示连接与例6.4 相同,PA 口工作于输出方式,作为LED 数码管的段码输出,LED 数码管的位信号接地,因此这个一位的LED 数码管工作于静态显示方式。图中使用了两个按键K1、K2,按键的一端分别与PD2(INT0)、PD3(INT1)连接。INT0 和INT1 作为外部中断的输入,采用电平变化的下降沿触发方式,当K1(K2)按下时,会在PD2(PD3)引脚上产生一个高电平到低电平的跳变,触发INT0 或NT1中断。,2,3,系统的功能还是控制一个8 段数
2、码管显示“0”“F”16 个十六进制的数字。当系统上电时,显示“0”。K1 键的作用是加“1”控制键:按1 次K1 键,显示数字加1,依次类推。 当第15 次按K1 键时,显示“F”,第16 次按K1 键,显示又从“0”开始。K2 键的作用是减1 控制键:按1 次K1 键,显示数字减1,减到“0”后,再从“F”开始。,4,#include flash char led_716=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07, 0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71; char counter; / INT0 中断服务程序
3、interrupt EXT_INT0 void ext_int0_isr(void) if (+counter=16) counter = 0; / INT1 中断服务程序 interrupt EXT_INT1 void ext_int1_isr(void),5, if (counter) -counter; else counter = 15; void main(void) PORTA=0xFF; DDRA=0xFF; GICR|=0xC0; / 允许INT0、INT1 中断 MCUCR=0x0A; / INT0、INT1 下降沿触发 GIFR=0xC0; / 清除INT0、INT1 中断
4、标志位 counter = 0; / 计数单元初始化为0 #asm(“sei“) / 全局中断允许 while (1) PORTA = led_7counter; / 显示计数单元 ; ,6,建议使用CVAVR 中的程序生成向导功能来帮助你建立整个程序的框架,以及芯片的初始化部分的语句,可以省掉你过多的查看器件手册和考虑寄存器的设置值等。 上面的程序,就是先利用CVAVR 的程序生成向导功能进行配置,然后在它生成的程序框架基础上完成的。程序中定义了一个计数变量counter,执行一次INT0 中断服务程序, counter 加1,而执行一次 INT1 中断服务程序,counter 减1。在主程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AVR 单片机 中断
链接地址:https://www.31doc.com/p-2577749.html