单片机
返回首页

LPC1114_外部中断程序_MDK编译环境

2015-07-10 来源:51hei

main.c
#include 'LPC11XX.h'
#include 'gpio.h'
#include 'timer16.h'
#include 'main.h'
#include 'Key.h'
#include 'LCD.h'
 
void Delay_Sec(unsigned char Time)                    //1s*Time延时函数
{
 u16 i;
    while(Time)
  {
   for(i=0;i<3000000;i++);
   Time--;
  }
}
void Delay_Ms(unsigned int Time)                    //1Ms*Time延时函数
{
 u16 i;
 while(Time)
 {
  for(i=0;i<3000;i++);
  Time--;
 }
}
void Delay_Us(unsigned int Time)                    //1Us*Time延时函数
{
 u8 i;
 while(Time)
 {
  for(i=0;i<3;i++);
  Time--;
 }
}
int main(void)
{
 //SystemInit();                            //系统初始化--主要是设置主时钟
 //GPIOInit();                              //IO口初始化--主要是开启GPIO时钟
 
 
 
 //GPIOSetDir( 0, 3, 1 );                   //设置P0.3为输出(LPC1114单片机,输出需设置为1,输入需设置为0)
 LPC_GPIO0->DIR |= (0x1<<3);                //设置P0.3为输出
 LPC_GPIO2->DIR |= (0x1<<9);
 
 Key_GPIO_Init();
 Key_Intrrupt_Init();
 
 while(1)
 {
  //GPIOSetValue( 0, 3, 0 );             //给P0.3位写0
  //LPC_GPIO0->DATA &= ~(0x1<<3);        //给P0.3位写0
  LCD_RW_High;
  //for(i=0;i<0xFFFFF;i++);              //延时
  
  Delay_Ms(100);                         //延时
  
  //GPIOSetValue( 0, 3, 1 );             //给P0.3位写1
  //LPC_GPIO0->DATA |= (0x1<<3);         //给P0.3位写1
  LCD_RW_Low;
  //for(i=0;i<0xFFFFF;i++);              //延时
  Delay_Ms(100);                         //延时
  }
}
 
 
 
key.c
#include 'LPC11XX.h'
#include 'gpio.h'
#include 'main.h'
#include 'Key.h'
void Key_GPIO_Init(void)
{
 LPC_GPIO1->DIR &= ~(0x1<<8);            //设置P1.8为输入
}
void Key_Intrrupt_Init(void)
{
 /*********配置中断*********/
 GPIOSetInterrupt(1,8,1,0,0);           //P1.8低电平触发中断
 
 /*********使能中断*********/
 GPIOIntEnable(1,8);
 
 /*********使能中断入口*********/
 NVIC_EnableIRQ(EINT1_IRQn);
}
 
 
 
 gpio.c
#include 'LPC11xx.h'   /* LPC11xx Peripheral Registers */
#include 'gpio.h'
void PIOINT1_IRQHandler(void)
{
  uint32_t regVal;
  gpio1_counter++;
  regVal = GPIOIntStatus( 1, 8 );
  if ( regVal )
  {
  LPC_GPIO0->MASKED_ACCESS[(1<<3)] = (0<<3);
  Delay_Ms(2000);
  LPC_GPIO0->MASKED_ACCESS[(1<<3)] = (1<<3);
  Delay_Ms(2000);
  LPC_GPIO0->MASKED_ACCESS[(1<<3)] = (0<<3);
  Delay_Ms(2000);
  LPC_GPIO0->MASKED_ACCESS[(1<<3)] = (1<<3);
  Delay_Ms(2000);
  
  //GPIOSetValue( 0, 3, 0 );             //给P0.3位写0
  //Delay_Ms(1000);
  //GPIOSetValue( 0, 3, 1 );             //给P0.3位写0
  //Delay_Ms(1000);
  
   GPIOIntClear( 1, 8 );
  }  
  return;
}
进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 光控音效发生器电路

  • 离子检测器电路分析

  • 非常简单的150W功放电路图

  • 基于IC555的可变PWM振荡器电路

  • 使用NE555和磁簧开关的橱柜照明电路

  • 一种构建12V和230V双直流电源的简单方法

    相关电子头条文章