一、实验目的
1、了解STC15W408AS的外部中断0的功能
2、探索STC15W408AS的外部中断0的使用方法
二、实验内容
使用STC15W408AS的外部中断0,控制点亮一个LED灯。具体要求为:
1、当给STC15W408AS的外部中断0功能P3.2引脚一个触发信号时,单片机产生一个中断,该中断去完成点亮一个LED灯,LED灯点亮1秒后,灯熄灭。
2、当再给P3.2引脚一个触发信号时,LED灯可以再次点亮1秒后,灯熄灭。循环往复。
三、硬件电路设计
硬件电路如下图所示:
四、软件程序设计
/********************************************
* 平台:STC15W408AS芯片
* 名称:外部中断功能演示程序
* 晶振:11.0592MHZ
********************************************/
#include <reg51.h>
#include <intrins.h>
sbit LED = P1 ^ 0;
bit flag = 0;
void initEX0();
void Delay1000ms();
void main()
{
initEX0();
LED = 1;
while (1)
{
if (flag)
{
LED = 0;
Delay1000ms();
}
flag = 0;
LED = 1;
}
}
/******************************************************************
延时1秒函数
******************************************************************/
void Delay1000ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 43;
j = 6;
k = 203;
do
{
do
{
while (--k)
;
} while (--j);
} while (--i);
}
/******************************************************************
外部中断初始化
******************************************************************/
void initEX0()
{
INT0 = 1;
IT0 = 0; //下降沿触发
EX0 = 1; //打开外部中断0开关
EA = 1; //打开总中断开关
}
/******************************************************************
外部中断服务程序
******************************************************************/
void EX0_int() interrupt 0
{
flag = 1;
}
五、实验效果
实验效果如下图所示:等以后有时间了,再上传图片!
六、实验心得
外部中断0功能看似简单,仔细研究一番,想实现自己想要的功能,却不简单。中间遇到很多问题,花了很多时间,解决了。本次实验最大的体会是:
1、 实践出真知。只有动手去做,才会把一件事物理解透彻。
2、 做难事必有所得。只有多做自己不会的事,才会有所收获。