学习STC15W408AS的外部中断0的使用

一、实验目的

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、 做难事必有所得。只有多做自己不会的事,才会有所收获。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值