实验三 GPIO输入试验

来源:互联网 发布:mp288 p07清零软件 编辑:程序博客网 时间:2024/05/22 12:58

一、 实验目的与要求

1.  认识LPC2103单片机的硬件电路;

2.  学习用C语言编写延时子程序

3.  学习用仿真软件模拟流水灯;

 

二、 实验设备

计算机

 

三、 实验原理电路

P0口控制发光二极管的阴极,则可以不需要驱动电路,直接由限流电阻控制发光二极管的亮度。

实验电路如下:

四、 实验内容与步骤

1.  编写程序,按下按键后使LED1P0.3),LED2P0.4)依次循环点亮;

2.  五、 实验报告要求

1.  列出程序清单;

#include <LPC2103.H>

#define uchar unsigned char

#define uint32 unsigned int

#define LED1CON (1<<22)  //P0.22口为LED控制端

void delay(uchar t)

{

uint32 i,j;

for(i=0;i<t;i++)

for(j=0;j<3000;j++);

}

void __irq IRQ_Eint0(void)

{

 uint32 i;

 i=IOSET;

 if((i&LED1CON)==0)

 {

  IOSET=LED1CON;

  delay(250);

 

 }

 else

 {

  IOCLR=LED1CON;

   delay(250);

 }

 

 while((EXTINT&0x01)!=0) //等待外部中断信号恢复为高电平

 {

  EXTINT=0x01; //清除EINT0中断标志

 }

 

 VICVectAddr=0; //向量中断结束

}

 

int main (void)

{

 PINSEL0=0x00000000;

 PINSEL1=0x00000001;   //设置引脚连接,P0.16设置为EINT0

 IODIR=LED1CON;  //设置LED1控制口为输出

 

 EXTMODE= EXTMODE|0x01; //设置EINT0为电平触发模式中断

 EXTPOLAR=EXTPOLAR&0X0E;

                     

 VICIntSelect=0x00000000; //设置所有中断分配为IRQ中断

 VICDefVectAddr=(int)IRQ_Eint0;//设置中断服务程序地址

 VICVectCntl0=0x20|14;

 EXTINT=0x01;  //清除EINT0中断标志

 VICIntEnable=0x00004000; //使能EINT0中断

 

 while(1);       //等待中断

    return 0;

}

 

 

原创粉丝点击