📄 用74ls148与74ls21扩展中断.c
字号:
//-----------------------------------------------------------------
// 名称: 用74LS148/74LS21扩展中断
//-----------------------------------------------------------------
// 说明: 本例利用74LS148扩展外部中断,对于外部的八个控制开关,任意
// 一个开关合上都将在GS引脚输出低电平,触发外部中断,优先级最
// 高的是输入引脚7,最低的是输入引脚0.中断触发后,中断例程通过
// 读取A2,A1,A0的输出,判断是哪一路按键触发中断.
//
// 对于74LS21,任何一个按键都会触发中断,它并没能真正实现中断
// 扩展,而是仅利用了INT0,省去了对多个按键的轮询判断.
//
//-----------------------------------------------------------------
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#define INT8U unsigned char
#define INT16U unsigned int
//此LED由主程序控制
#define LED_BLINK() PORTB ^= _BV(PB0)
//-----------------------------------------------------------------
// 主程序
// 说明:由于Proteus中74LS148存在问题,与输入引脚0对应的开关控制无效.
//-----------------------------------------------------------------
int main()
{
}
//-----------------------------------------------------------------
// INT0中断服务程序(四个按键中任何一个按下时都会触发INT0中断)
//-----------------------------------------------------------------
ISR (INT0_vect)
{
}
//-----------------------------------------------------------------
// INT1中断服务程序(当有按钮按下时,GS为零,触发INT1中断)
//-----------------------------------------------------------------
ISR (INT1_vect)
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -