1、 用PWM方式,使LED灯闪烁。
#include \ void PwmInit(void); int main(void){
PINSEL0=0x00080000; PwmInit(); while(1){ PWMMR0=4000;
}
void PwmInit(){
PWMPR=0x00; PWMMCR=0x02; PWMMR6=2000; } return 0;
}
PWMMR0=4000; PWMMR6=2000; PWMLER=0x41; PWMPCR=0x4000; PWMTCR=0x09;
2、 用定时器匹配后引脚翻转功能使LED灯1秒闪烁一次。
#include \ #define
LED 1<<3
T0TCR = 0x01; T0EMR=0X30; VICIntSelect = 0x00;
VICVectCntl0 = 0x24;
IOCLR=LED; Time0Init();
void __irq IRQ_Time0(){
while((T0IR&0x01)==0);
T0IR=0x01; VICVectAddr=0x00; }
void Time0Init(){
T0PR = 99;
while(1); }
VICVectAddr0 = (uint32)IRQ_Time0;
}
int main(){
PINSEL0 = 0x00000080;
VICIntEnable = 0x00000010;
return 1;
T0MCR = 0x03;
T0MR0 = 110592/4; T0TCR = 0x03;
3、 上位机发送一个数字字符给下位机(1-8),下位机接受到这个字符若为“1”,则点亮一盏灯,“2”点亮2盏灯。。。。。。。“8”点亮8
盏灯。
4、 设外部中断为FIQ快速中断,按键按下,灯的亮灭状态改变。
/*
*注意:需要在中添加EXTMODE和EXTPOLAR寄存器 */
#include \ #define LED 0x01 void __irq IRQ_SPR() {
if((IOPIN&0X01)==0) else
IOCLR=0X01;
IOSET=0X01;
}
//中断初始化 void EINT_init(){
PINSEL0=0X;//选择为中EINT1,为GPIO VICIntSelect=/*~*/(1<<15);//设置EINT1为
} int main(){ }
EINT_init();
IODIR=LED;//为输出,其余为输入 IOSET=LED;//开始不显示 while(1); return 0;
FIQ中断
VICIntEnable=(1<<15);//EINT1中断使能,
开中断
EXTINT=0x02;//清中断
while((EXTINT&0X02)!=0) EXTINT=0x02;
修改头文件 修改lpc2016
1)在#define MAMTIM (*((volatile unsigned char *) 0xE01FC004))//定时控制 添加:
#define EXTMODE (*((volatile unsigned char *) 0xE01FC148)) #define EXTPOLAR (*((volatile unsigned char *) 0xE01FC14C)) 2)添加 lcd1602 3)修改
void FIQ_Exception(void) {
if((IOPIN&0X01)==0)
IOSET=0X01; else
IOCLR=0X01;
while((EXTINT&0X02)!=0) EXTINT=0x02;
// while(1); // 这一句替换为自己的代码 }
4) 修改 文件 将 5f 改成 9f
5、外部中断,通过1个按键使8个发光二极管二进制显示加法。
#include \
#define LED 0x000000FF //设置p0引脚 typedef unsigned int uint32; uint32 counter=0;
void __irq IRQ_Eint1(void){ //加法 counter++; IOSET=LED; IOCLR=counter;
while((EXTINT&0x02)!=0){ }
VICVectAddr=0; }
EXTINT=0x02;
int main(void) }
{
PINSEL0 = 0x; IODIR = LED; IOSET=LED; IOCLR=counter; VICIntSelect=0;
VICIntEnable=0x00008000; VICVectCntl1=0x2F;
VICVectAddr1=(int)IRQ_Eint1; while (1) ;
6、用单边沿、双边沿两种方式输出两路脉冲信号,要求占空比为50%,显示在同一个示波器上;