实验三 外部中断实验
-
实验目的
1、掌握MCS-51单片机外部中断的原理。
2、掌握MCS-51单片机外部中断程序的设计方法及其过程。
3、掌握MCS-51单片机外部中断的电路应用。
-
实验任务
利用外部中断方式,实现通过按键切换流水灯的流向。流水灯形式自定,按键按一次,流水灯的流向改变一次。
-
实验原理
当CPU正在处理某件事情(如正在执行主程序)时,单片机外部或内部发生的某一事件(如外部设备产生的一个电平变化或脉冲跳沿的变化,或者是片内事件的发生,如计数器的计数溢出等)请求CPU迅速去处理,于是CPU暂时中止当前的工作,转到中断服务处理程序处理所发生的事件。中断服务处理完该事件后,再回到原来被终止的地方,继续原来的工作(如继续执行被中断的主程序),这称为中断。
80C51的中断系统有5个中断源,如图3-1所示。
图3-1 中断系统结构框图
51单片机有/INT0和/INT1两条外部中断请求输入线,引脚P3.2和P3.3。
两种触发方式:
电平触发及跳变(边沿)触发。由特殊功能寄存器TCON来管理。
IT0(IT1):外部中断0(或1)触发方式控制位。IT0(或IT1)被设置为0,电平触
发方式;IT0(或IT1)被设置为1,边沿触发方式。
IE0(IE1):外部中断0(或1)的中断请求标志位。
中断允许控制:
EA:中断允许总控位。EA=0,屏蔽所有的中断请求;EA=1,开放中断。
EX0:外部中断 INT0的中断允许位。
EX1:外部中断 INT1的中断允许位。
电路原理图如图3-2所示。
图3-2 外部中断实验电路
注释:上面的原理是课程设计给的模板,不是我写的,仅供参考,如有相同就是参考的,参考书:单片机原理与接口技术实验指导书、单片机原理与接口技术
-
程序流程图
图一 程序流程图
-
实验结果及分析总结
图二 第一种流水灯形态
如图二所示,第一按键,按下时led灯依次闪烁的流向是从左到右。
图三 第二种流水灯形态
如图三所示,第二次按键按下,左边四个led灯亮起,右边四个led灯灭。
图四 第三种流水灯形态
如图四所示,第三次按键按下,led灯流向,由D1流向D4之后从D8流向D4,以D4为中心向中靠拢。
图五 第四种流水灯形态
如图五所示,第四次按下按键,两个led亮,并依次从左往右闪烁。
图六 程序编写内容
如图六所示,使用keil uvison5编写的程序。本次实验实现的是四种形态的流水灯。
-
程序附录
void delay(uint num) {uint i, j;for (i = num; i > 0; i--)for (j = num; j > 0; j--); }void main() {IT0 = 1;EA = 1;EX0 = 1;while (1){if (AddNum == 0){P1 = 0xfe; //1111 1110delay(100);P1 = 0xfd; //1111 1101delay(100);P1 = 0xfb; //1111 1011 delay(100);P1 = 0xf7; //1111 0111delay(50);P1 = 0xef; //1110 1111delay(100);P1 = 0xdf; //1101 1111 delay(100);P1 = 0xbf; //1011 1111delay(100);P1 = 0x7f; //0111 1111 delay(100);}if (AddNum == 1){P1 = 0x0f; //1111 0000delay(500);P1 = 0xff; //1111 1111delay(500);}if (AddNum == 2){P1 = 0x7f; //0111 1111 delay(100);P1 = 0xbf; //1011 1111delay(100);P1 = 0xdf; //1101 1111 delay(100);P1 = 0xef; //1110 1111delay(100);P1 = 0xfe; //1111 1110delay(100);P1 = 0xfd; //1111 1101delay(100);P1 = 0xfb; //1111 1011 delay(100);P1 = 0xf7; //1111 0111delay(50); }if (AddNum == 3){P1 = 0x3f; //0011 1111 delay(100);P1 = 0xcf; //1100 1111delay(100);P1 = 0xf3; //1111 0011delay(100);P1 = 0xfc; //1111 1100delay(100);}} }void INT_0(void) interrupt 0 {AddNum++;if (AddNum > 3){AddNum = 0;} }
学习过程中,参考资料网上的,如有侵权删。如有需要自行下载源文件,里面code文件是程序代码,还有一个仿真文件。