求助:一个编译器的问题...

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

等ing

请大家看看,问题在哪?我对C不是很了解,只好请教大伙..
阿南 发表于 2007-12-13 13:12 | 显示全部楼层

将"unsigned long LED"修改成"unsigned int LED"试一下

  
FU10 发表于 2007-12-13 17:59 | 显示全部楼层

多谢阿南!

明天有事可能试不了,下星期回去试试,不管怎样,先多谢阿南的建议.
 楼主| fu10 发表于 2007-12-17 09:53 | 显示全部楼层

唉,找到旧问题,又出新问题...

&nbsp;原来在BL&nbsp;&nbsp;MAIN前加上<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;R0,&nbsp;=0x3FF0000&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;R1,&nbsp;=0xE7FFFF80&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STR&nbsp;&nbsp;&nbsp;&nbsp;R1,&nbsp;[R0]&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;就可以了,但又出了个奇怪的问题,重新上电后要过一分多钟才能正常工作,晕~~令我百思不解的是:上面的是4510片子寄存器SYSCFG的配置指令,为何能在LPC2148上能用?因为LPC2148没有SYSCFG寄存器啊(查过2148手册)!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

222

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部