问题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的晶振试试,高手路过请指点一下啊
有狗吗?先关起来再说!!
再一个,有的芯片在用不同的晶体的时候,会有配置寄存器,是不是要改一下下?
是不是有硬件狗?
如果有的话那就在循环里喂一下
或者关掉!
另外,楼主可以在循环里点个灯看看就知道了!
第一、复位脚是否正常
第二、ALE角是否有波形输出
第三、晶振角是否有波形输出
另:仿真时晶振是内部还是外部
#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);
}
}
试试?
void delay(uchar n)
{
uchar i;
for(i=0;i
{
_nop_();
}
}//加这个延时程序看看
回复晚了,请见谅
程序都没有开启看门狗,仿真时晶振是内部的,所以看不出是电路板的问题
第一个问题经查对是电路板上晶振和电容的的方向接反所致,反过来后正常运行了
第二个问题再试下