一个简短程序放在AT89C55WD中好象不工作了,是否与程序有关?

qinxuewei101   2007-9-19 01:16 楼主
问题1:
全部程序如下:
#include
sbit Fscx = P3^4;
sbit CW   = P3^5;
void main()
{
   int i;
   CW = 0;

   while(1)
   {
       Fscx = 1;
       Fscx = 0;
       Delay(100);
   }
}
用WAVE仿真器调试是正常的,但把程序烧录到AT89C55WD芯片中后,放在24MHZ晶振电路上完全不工作了一样,Fscx接连赋值是得到一个下降沿,经验说明是能被响应的。修改CW的值为1或0后,去测试芯片引脚电压正确。

问题2:
还有,另一个程序烧录到AT89C52中,现象类似上面的,通电后好象死机没有了反应,
      但烧录同一个的程序到AT89C55WD中就能运行。
不知道是什么原因,困扰了一段时间了,是不是晶振过高所致,等会我去换个16MHZ的晶振试试,高手路过请指点一下啊

回复评论 (7)

有狗吗?先关起来再说!!

再一个,有的芯片在用不同的晶体的时候,会有配置寄存器,是不是要改一下下?
点赞  2007-9-19 09:13
是不是有硬件狗?
如果有的话那就在循环里喂一下
或者关掉!

另外,楼主可以在循环里点个灯看看就知道了!
点赞  2007-9-19 11:33
第一、复位脚是否正常
第二、ALE角是否有波形输出
第三、晶振角是否有波形输出
另:仿真时晶振是内部还是外部
点赞  2007-9-20 15:47
喂狗
检查编译配置
检查环境配置
点赞  2007-9-20 22:23
#include
sbit Fscx = P3^4;
sbit CW   = P3^5;
void main()
{
   int i;
   CW = 0;

   while(1)
   {
       Fscx = 1;
       Delay(1); //<<<<<<<<<<<<就加这一句
       Fscx = 0;
       Delay(100);
   }
}

试试?
点赞  2007-9-21 20:03
void delay(uchar n)
{
uchar i;
for(i=0;i   {
   _nop_();
  }
}//加这个延时程序看看
点赞  2007-9-28 15:34
回复晚了,请见谅
程序都没有开启看门狗,仿真时晶振是内部的,所以看不出是电路板的问题
第一个问题经查对是电路板上晶振和电容的的方向接反所致,反过来后正常运行了
第二个问题再试下
点赞  2007-10-13 00:25
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复