偶最近做了一个板子,用LPC2148做的,编了一个非常小的程序去点亮一个LED灯,编译时发现一个问题,用"P0XSET=0x80000000;"代替"P0XCLR=LED;",以及用"P0XSET=0x80000000;"代替"P0XSET=LED;"就能把灯点亮,并且可以一闪一闪的,如果调过来的话就没发点亮LED灯.并且用DELAY()去延时的话,如何改P0XSET和P0XSET都没效果,但编译生成BIN文件过程和AXD的调试过程都成功,没报错的.我是用非利浦的LPC210X_ISP.EXE下载BIN文件的,一直弄不清问题在哪,请大侠们高抬贵手,救小弟一把,非常感谢!!源程序就是下面的 //**************init.s****************** IMPORT Main AREA Init, CODE, READONLY ENTRY LDR SP, =0x40001ff0 ;SP指向4K SRAM的尾地址 BL Main END //********************************
//**************Main.c***************** #define PINSEL1 (*(volatile unsigned *)0xE002C004)//管脚功能选择寄存器// #define P0XDIR (*(volatile unsigned *)0xE0028008)//端口0方向择寄存器// #define P0XSET (*(volatile unsigned *)0xE0028004)//端口0位设置寄存器// #define P0XCLR (*(volatile unsigned *)0xE002800C)//端口0位清除寄存器// //#define IOPDATA (*(volatile unsigned *)0x3FFFC007) //IO port data register #define uchar unsigned char #define unum32 unsigned long void Delay(unsigned int); int Main() { unsigned long LED,cl; // IOPMOD=0xFFFFFFFF; //将IO口置为输出模式 PINSEL1=0x00000000; //将IO口置为GIO模式 P0XDIR=0xffffffff; //将IO口置为输出模式 FP0XDIR=0xffffffff; //将IO口置为输出模 // IOPDATA=0x01; LED=0x80000000; while(1){ P0XCLR=LED; <<-------改为P0XSET=0x80000000;就能点亮 // P0XCLR=0x80000000; for(cl=50000;cl>0;cl--); //延时 // Delay(100); P0XSET=LED; <<-------改为P0XSET=0x80000000;就能点亮 // P0XSET=0x80000000; for(cl=50000;cl>0;cl--); //延时 // Delay(100); } return(0); } void Delay(unsigned int x) //延时 { unsigned int i,j,k; for(i=0;i<=x;i++) for(j=0;j<0xff;j++) for(k=0;k<0xff;k++); } //******************************
|