求教,关于ADS里面MAIN函数~~ 不优先执行

[复制链接]
3303|7
 楼主| linfeng286 发表于 2008-3-12 21:36 | 显示全部楼层 |阅读模式
代码如下:<br />&nbsp;&nbsp;我用ADS里点调试&nbsp;<br />他就从&nbsp;myUart_SendByte&nbsp;先开始执行了<br />也就是说&nbsp;把哪个函数放在前面他就先执行哪个~~<br />才不管&nbsp;应该从MAIN&nbsp;开始执行呢&nbsp;<br />怎么回事呢?<br /><br /><br /><br />#include&nbsp;&quot;2410addr.h&quot;<br /><br />void&nbsp;myUart_SendByte(char&nbsp;ch)<br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(ch=='\n')<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(!(rUTRSTAT0&nbsp;&&nbsp;0x2));//&micro;&Egrave;&acute;&yacute;&pound;&not;&Ouml;±&micro;&frac12;·&cent;&Euml;&Iacute;&raquo;&ordm;&sup3;&aring;&Ccedil;&oslash;&Icirc;&ordf;&iquest;&Otilde;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Delay(10);&nbsp;&nbsp;&nbsp;&nbsp;//&sup3;&not;&frac14;&para;&Ouml;&ETH;&para;&Iuml;&micro;&Auml;&Iuml;ì&Oacute;&brvbar;&Euml;&Ugrave;&para;&Egrave;&frac12;&Iuml;&Acirc;&yacute;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WrUTXH0('\r');//·&cent;&Euml;&Iacute;&raquo;&Oslash;&sup3;&micro;·&ucirc;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(!(rUTRSTAT0&nbsp;&&nbsp;0x2));&nbsp;//&micro;&Egrave;&acute;&yacute;&pound;&not;&Ouml;±&micro;&frac12;·&cent;&Euml;&Iacute;&raquo;&ordm;&sup3;&aring;&Ccedil;&oslash;&Icirc;&ordf;&iquest;&Otilde;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Delay(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WrUTXH0(ch);//·&cent;&Euml;&Iacute;×&Ouml;·&ucirc;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br /><br /><br /><br /><br />void&nbsp;myUart_Send&nbsp;(char&nbsp;*str)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(*str)<br />{&nbsp;&nbsp;&nbsp;&nbsp;<br />myUart_SendByte(*str++);<br />}<br /><br />}&nbsp;&nbsp;&nbsp;&nbsp;<br /><br /><br /><br /><br /><br />int&nbsp;Main()<br />{<br /><br />rGPHCON&nbsp;=&nbsp;0xa0;&nbsp;//GPH2,GPH3&nbsp;&Eacute;è&Ouml;&Atilde;&sup3;&Eacute;&nbsp;TXD0,RXD0<br />rGPHUP&nbsp;=0x0c;&nbsp;//GPH2,GPH3&nbsp;&Eacute;&Iuml;&Agrave;&shy;&micro;&ccedil;×è&Ecirc;&sup1;&Auml;&Uuml;<br />rULCON0&nbsp;=&nbsp;0x03;&nbsp;//8N1(8&cedil;&ouml;&Ecirc;&yacute;&frac34;&Yacute;&Icirc;&raquo;&pound;&not;&Icirc;&THORN;&ETH;§&Ntilde;é&Icirc;&raquo;&pound;&not;1&cedil;&ouml;&Iacute;&pound;&Ouml;&sup1;&Icirc;&raquo;)<br />rUCON0&nbsp;=&nbsp;0x05;&nbsp;&nbsp;//&sup2;é&Ntilde;&macr;&Auml;&pound;&Ecirc;&frac12;<br />rUFCON0&nbsp;=&nbsp;0x0;&nbsp;&nbsp;//&sup2;&raquo;&Ecirc;&sup1;&Oacute;&Atilde;FIFO<br />rUMCON0&nbsp;=&nbsp;0x0;&nbsp;&nbsp;//&sup2;&raquo;&Ecirc;&sup1;&Oacute;&Atilde;&Aacute;÷&iquest;&Oslash;&Ouml;&AElig;<br />rUBRDIV0&nbsp;=&nbsp;26;&nbsp;&nbsp;//&sup2;¨&Igrave;&Oslash;&Acirc;&Ecirc;&Icirc;&ordf;115200<br /><br /><br />&nbsp;while(1)<br />&nbsp;{<br />&nbsp;while(&nbsp;!&nbsp;(rUTRSTAT0&nbsp;&&nbsp;0x2)&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;myUart_Send(&quot;my&nbsp;OK\n&quot;);<br />}<br />}
阿南 发表于 2008-3-13 12:51 | 显示全部楼层

点右键,用混合模式查看反汇编代码是否正确

当RAM不可用时,装载的代码没有成功时,也会出现这种情况,也就是说你执行的代码是假的,单步时会一直顺序的往下走
xhtxzxw 发表于 2008-3-13 13:44 | 显示全部楼层

嘿嘿

你的初始化代码里(一般都是汇编写的)要指定一下main()函数作为起点啊!
 楼主| linfeng286 发表于 2008-3-13 15:13 | 显示全部楼层

关于MAIN启动

我没有初始化函数啊。<br />因为我找到的都是超级复杂的m<br /><br />有没有简单的&nbsp;只是&nbsp;
 楼主| linfeng286 发表于 2008-3-13 15:13 | 显示全部楼层

RE

为什么一定要制定&nbsp;从哪启动呢?<br />难道编译器不知道&nbsp;从MAIN开始执行么?
dld2 发表于 2008-3-13 15:20 | 显示全部楼层

糊鲁巴涂

C程序执行前,必须有初始化代码。<br />处理器是从0地址开始执行的,然后初始化,然后调用main()。
 楼主| linfeng286 发表于 2008-3-13 16:19 | 显示全部楼层

RE

谁有启动代码&nbsp;给我一个?
xhtxzxw 发表于 2008-3-13 22:16 | 显示全部楼层

嘿嘿

绝对绝对不象你在DOS或者WINDOWS系统下用C写程序!!!!<br />因为你现在是“裸奔”,没有操作系统支持,所以你的程序除了要有main()函数,还必须有初始化代码,而且即使你有初始化代码,也不能保证初始化以后就能跑到你的main()里来,你必须在初始化代码里执行完所有的初始化以后用b指令(跳转指令)跳到main()里来。所以你甚至可以不用main()做你的主函数名,呵呵,一般的写法应该是:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXTERN&nbsp;&nbsp;&nbsp;&nbsp;main<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//底层初始化代码<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;&nbsp;=main<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bx&nbsp;&nbsp;&nbsp;&nbsp;r0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//这就跳到你的main()了,实际上你想往哪儿跳就往哪儿跳,只是记得前面EXTERN&nbsp;??要给出声明<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//如果你的main()里没有死循环,就有可能回这里了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

52

帖子

0

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