嵌入式||中断程序设计(3)

一、实验目的:

掌握LPC2138微控制器的中断管理并使用它控制外围电路。

二、实验设备:

预装了keil及proteus的PC机。

三、实验内容

     LPC2138微控制器的中断管理是由向量中断控制器VIC操作的,向量中断控制器具有32个中断请求输入(32个中断通道,但LPC2138只使用了19个通道号0~18)可将它们设置为FIQ、向量IRQ和非向量IRQ,通过编程不同外设的向量IRQ的中断优先级,可以实现动态分配调整。

定义蜂鸣器的输出端口,运用寄存器PINSEL0、PINSEL1设置EINT3唤醒芯片,清除EINT3中断标志。运用while、if-else循环语句设置定时器、蜂鸣器。将定时器、RTC、串口功能关闭,在掉电模式下运用IO0SET、IO0CLR寄存器控制蜂鸣器的蜂鸣。

     电路原理图如下图所示:

四、实验步骤:

      使用keil5编辑程序,生成hex文件,打开DSN文件,把hex文件加入到微控制器中,运行仿真,按下KEY1按键,观察LED灯的暗灭变化。

五、实验要求:

  1. 根据实验任务要求,编写源程序;
  2. 上机调试程序。

六、实验程序

#include "Config.h"
#include "Target.h"
#define  BEEP  (1<<7)
/****************************************************************************
* 名称:DelayNS()
* 功能:长软件延时
* 入口参数:dly		延时参数,值越大,延时越久
* 出口参数:无
****************************************************************************/
void  DelayNS(uint32  dly)
{
   uint32  i;

   for(; dly>0; dly--)

      for(i=0; i<3000; i++);
}
/*
*********************************************************************************************************
** 函数名称 :main()
** 函数功能 :演示外部中断唤醒掉电的CPU,但不产生中断
** 入口参数 :无
** 出口参数 :无
*********************************************************************************************************
*/
int  main(void)
{  PINSEL0 = 0x00000000;		 // 设置所有管脚连接GPIO*/
   PINSEL1 = 0x00000300;                // 设置管脚连接,P0.20设置为EINT3
   IO0DIR  = BEEP;
    /* 打开EINT0中断(使用非向量IRQ) */
	EXTWAKE = 0x08;					// 外部中断3唤醒芯片
	EXTINT  = 0x08;					// 清除EINT3中断标志	
	IO0CLR = BEEP;
	while (1)	
	{      
		PCONP = 0x00;					// 关闭定时器、RTC、UART等功能部件
		PCON  = 0x02;					// 系统进入掉电模式	
		/* 当系统被唤醒后,取反BEEP控制 */
                 if((IO0SET&BEEP)==0)
		  IO0SET = BEEP;
                 else
                  IO0CLR = BEEP;
                  while((EXTINT&0X08)!=0)
                  EXTINT=0X08;
	}
}

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值