单片机实验说明<二>外部中断基本使用

it2025-03-16  22

实验二 外部中断应用

设计要求:

自行设计实验线路并编制程序:要求在无外部中断时最右一位发光二极管点亮。请编程实现:当外部中断0请求中断时发光二极管左移;当外部中断1请求中断时发光二极管闪烁。

电路设计:

软件代码:

/***************************************************************************** * 头文件 * *****************************************************************************/ #include "hml/hml.h" #define LSA P1_5 #define LSB P1_6 #define LSC P1_7 void EXINT0() __interrupt 0; void EXINT1() __interrupt 2; /***************************************************************************** * 初始化和功能函数 * *****************************************************************************/ void sys_init(void) { LSA=0; LSB=0; LSC=0; IT0=0; IT1=0; EA=1; EX0=1; EX1=1; } void Up2Down(int x) { int i, j; unsigned char sel=0x7f; for(i=0;i<x;i++) { for(j=0;j<8;j++) { P0 = sel; sleep(125); sel=sel>>1|0x80; } sel=0x7f; } } void EXINT0() __interrupt 0 { Up2Down(1); } void EXINT1() __interrupt 2 { P0=0xFF; sleep(125); P0=0x7F; sleep(125); P0=0xFF; sleep(125); } /***************************************************************************** * 主函数 * *****************************************************************************/ void main(void) { sys_init(); while(true) { P0=0x7F; } }

思考题:

1.51 单片机的中断系统由哪几个特殊功能寄存器组成? 2.中断函数与函数调用有何不同? 3.如果 INT0 和 INT1 的优先级都设置成 0,但我们知道中断号越小,优先级越高,即 INT0 的自 然优先级高于 INT1,请修改程序,先按下 KEY1,在 LED 的闪烁过程中按下 KEY0,看能否打断 LED 的闪烁?原因是什么?


 

zhangrelay 认证博客专家 不合格高校讲师 LoveRobot,Go!!!!人工智能和机器人粉,从事机器人工程专业本科教学和科研工作,研究方向包括多机器人仿真技术,控制与协作,机器人系统软硬件开发等。
最新回复(0)