单片机实验说明<二>外部中断基本使用
【摘要】 实验二 外部中断应用
设计要求:
自行设计实验线路并编制程序:要求在无外部中断时最右一位发光二极管点亮。请编程实现:当外部中断0请求中断时发光二极管左移;当外部中断1请求中断时发光二极管闪烁。
电路设计:
软件代码:
/*********************************************************************...
实验二 外部中断应用
设计要求:
自行设计实验线路并编制程序:要求在无外部中断时最右一位发光二极管点亮。请编程实现:当外部中断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.blog.csdn.net,作者:zhangrelay,版权归原作者所有,如需转载,请联系作者。
原文链接:zhangrelay.blog.csdn.net/article/details/109209696
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)