一个简单的方波程序怎么出不来呢?

[复制链接]
 楼主| alleluia 发表于 2007-7-9 12:36 | 显示全部楼层 |阅读模式
我用2407写了一个产生方波的简单程序,但是烧进去后发现出不来波形,不知道是怎么回事,难道是我的程序错了吗?各位能帮我看看是怎么回事吗?<br /><br />//这是主程序<br />#include&nbsp;&quot;DSP2407A.h&quot;<br /><br />#define&nbsp;uint&nbsp;unsigned&nbsp;int<br />#define&nbsp;uchar&nbsp;unsigned&nbsp;char<br /><br />uint&nbsp;cn;&nbsp;//计数次数<br /><br />//Iintial&nbsp;system&nbsp;configure&nbsp;&nbsp;<br />void&nbsp;&nbsp;InitSys(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;asm&nbsp;(&quot;&nbsp;clrc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OVM&quot;);&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;asm&nbsp;(&quot;&nbsp;clrc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CNF&quot;);&nbsp;&nbsp;&nbsp;&nbsp;//B0--数据存储器<br />&nbsp;&nbsp;&nbsp;&nbsp;*SCSR1&nbsp;=&nbsp;0x81FE;<br />&nbsp;&nbsp;&nbsp;&nbsp;*WDCR&nbsp;=&nbsp;0x0E8;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;*IMR&nbsp;=&nbsp;0x0001;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;*IFR&nbsp;=&nbsp;0x0FFFF;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;*MCRA&nbsp;=&nbsp;0x0000;&nbsp;&nbsp;&nbsp;&nbsp;//配置成一般IO口&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;*PBDATDIR&nbsp;=&nbsp;0x0FFFF;&nbsp;&nbsp;&nbsp;//PB为输出1<br />}<br /><br />int&nbsp;main(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;InitSys();<br />&nbsp;&nbsp;&nbsp;&nbsp;asm&nbsp;(&quot;&nbsp;setc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INTM&quot;);&nbsp;&nbsp;//关中断<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PB口产生一个方波<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*PBDATDIR&nbsp;=&nbsp;0x0FF00;&nbsp;&nbsp;//PB输出0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(cn=0;&nbsp;cn&lt35000;&nbsp;cn++){;}&nbsp;//延时<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*PBDATDIR&nbsp;&nbsp;=0x0FFFF;&nbsp;&nbsp;//PB输出1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(cn=0;&nbsp;cn&lt35000;&nbsp;cn++){;}&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PS:把0x0ff00换成0xff00也能通过编译,奇怪了<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />}<br /><br /><br />//这是cmd配置文件<br /><br />MEMORY<br />{<br />&nbsp;&nbsp;PAGE&nbsp;0:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VECS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;origin&nbsp;=&nbsp;0000h,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;length&nbsp;=&nbsp;0040h<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FLASH:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;origin&nbsp;=&nbsp;0100h,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;length&nbsp;=&nbsp;0F00h<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SARAM_P:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;origin&nbsp;=&nbsp;8100h,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;length&nbsp;=&nbsp;1000h&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;PAGE&nbsp;1:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B2:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;origin&nbsp;=&nbsp;0060h,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;length&nbsp;=&nbsp;020h<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B0:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;origin&nbsp;=&nbsp;200h,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;length&nbsp;=&nbsp;100h<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B1:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;origin&nbsp;=&nbsp;300h,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;length&nbsp;=&nbsp;100h<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SARAM_D:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;origin&nbsp;=&nbsp;0800h,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;length&nbsp;=&nbsp;0800h<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXT_RAM:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;origin&nbsp;=&nbsp;8000h&nbsp;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;length&nbsp;=&nbsp;8000h&nbsp;<br />}<br /><br />SECTIONS<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.vectors:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt&nbsp;VECS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PAGE&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.text:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt&nbsp;FLASH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PAGE&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.data:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt&nbsp;FLASH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PAGE&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.bss:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt&nbsp;SARAM_D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PAGE&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.stack:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt&nbsp;SARAM_D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PAGE&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.buffer:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt&nbsp;SARAM_D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PAGE&nbsp;1<br />}<br />
chen3bing 发表于 2007-7-9 17:57 | 显示全部楼层

re

你那样设置是输入,不是输出.
chen3bing 发表于 2007-7-9 18:04 | 显示全部楼层

RE

对不起,看错了.
 楼主| alleluia 发表于 2007-7-9 18:12 | 显示全部楼层

结果出来了,但我搞不懂,跟复位有关吗

&nbsp;*PBDATDIR&nbsp;=&nbsp;0x0FFFF;&nbsp;&nbsp;&nbsp;//PB为输出1&nbsp;<br />上面这句话是输入吗?<br /><br />经过一下午调试,结果出来了,不过原因很复杂,至今我也没搞明白,不知道有人知道不:<br />我用的电路板中是将MP/MC#置1的(不知道跟这有没有关系),然后我加了一段向量表<br />/********************<br />文件vectors.asm<br />***********************<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.title&nbsp;&quot;vectors.asm&quot;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.ref&nbsp;&nbsp;&nbsp;_c_int0,&nbsp;_nothing<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.sect&nbsp;&nbsp;&nbsp;&nbsp;&quot;.vectors&quot;<br /><br />reset:&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;_c_int0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />int1:&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;_nothing&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />int2:&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;_nothing&nbsp;&nbsp;<br />int3:&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;_nothing&nbsp;&nbsp;<br />int4:&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;_nothing&nbsp;&nbsp;&nbsp;<br />int5:&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;_nothing&nbsp;<br />int6:&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;_nothing&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />在主程序中再加入<br />void&nbsp;interrupt&nbsp;nothing()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br />}<br />这样的话经过编译--烧写后,如果马上测PB口的话也是出不来的,必须将仿真器拔掉,再将电源关掉,重新上电后PB口就会出现方波了,所以我怀疑是不是跟复位之类的有关,不知道各位知道否?
tjsheep 发表于 2007-7-10 10:58 | 显示全部楼层

那就是有没有关掉的中断一直在发生,所以一开始程序跑飞

  
 楼主| alleluia 发表于 2007-7-10 11:37 | 显示全部楼层

没有关掉的中断在哪呢?

没有关掉的中断在哪,看不出来;程序一开始跑飞是因为一开始就进入某个没有关掉的中断吗
zhaoxinzxzx 发表于 2007-7-10 23:10 | 显示全部楼层

插仿真器的时候程序运行了吗?

程序烧入到DSP里后要复位一下,然后按F5运行程序。<br /><br />MP/MC#设置为1,那程序地址空间不是在片外了吗?如果片外没有程序存储器的话应该运行不起来才对啊!
 楼主| alleluia 发表于 2007-7-11 18:23 | 显示全部楼层

搞错了

不好意思,搞错了,MP/MC#确实接地了,呵呵~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

21

帖子

1

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