一、 实验目的与要求
1. 认识LPC2103单片机的硬件电路;
2. 学习用C语言编写延时子程序
3. 学习用仿真软件模拟流水灯;
二、 实验设备
计算机
三、 实验原理电路
P0口控制发光二极管的阴极,则可以不需要驱动电路,直接由限流电阻控制发光二极管的亮度。
实验电路如下:
四、 实验内容与步骤
1. 编写程序,按下按键后使LED1(P0.3),LED2(P0.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;
}