作者nfs258147 (258)
看板ASM
标题[问题] 8051晶片问题
时间Sat Apr 3 17:06:39 2010
大家好!
最近在做单晶片AT89S52的应用,
遇到一些令我不解的问题...
下面两个c程式只差在main中的第五行,
但程式2会使整个晶片不正常运作(P2_7出现脉波, 约20k Hz),
而程式1的P2_7脚位就乖乖的low...
compile没错误也没警告(data, xdata, code size都正常).
烧到晶片後(程式2)出现问题,(程式1)ok.
这个问题是我在宣告一个变数阵列时发现的,
比如说:
char data array[20];
有时候我要再加一些多余的叙述(如 P2_7 =0;多来个几次)晶片才正常...
其实我在写这个晶片程式时常常会发生像这样晶片不正常运作的情形,
下面的范例只是其中一个例子.
如果这个问题可以解决,
或许其它问题都可迎刃而解.
文章又臭又长
先谢谢大哥们的指点 m(_ _)m
//////////////// 程式1 正常 ////////////////
#include <REGX52.h>
void Main( void )
{
P2_7 = 0;
P2_7 = 0;
P2_7 = 0;
P2_7 = 0;
P2_7 = 0;
while(1);
}
//////////////// 程式2 不正常 ////////////////
#include <REGX52.h>
void Main( void )
{
P2_7 = 0;
P2_7 = 0;
P2_7 = 0;
P2_7 = 0;
// P2_7 = 0;
while(1);
}
///////// 环境设定 ///////////
uVision2 - Keil C
C compiler : C51 v7.20
AT89S52: Memory Model=Small, Code Rom=Large, xtal=11MHz, 8K flash, 256 RAM.
使用ISP烧录到晶片上
※ 编辑: nfs258147 来自: 140.114.57.47 (04/03 17:51)
1F:推 ruemann:你的keilC有startup.asm吗? 04/03 18:44
2F:→ nfs258147:只有找到STARTUP.A51, 放入GROUP後还是一样... 但谢谢你 04/03 19:00
雪特, 把STARTUP.A51放到主程式之前就OK了(刚刚放到後面去)
太感谢你了阿!!
顺便问一下...如果没有STARTUP.A51会怎样吗?
※ 编辑: nfs258147 来自: 140.114.57.47 (04/03 19:04)
3F:推 WolfLord:没有适当INI的CPU很可能每次RESET都跟吃角子老虎一样 04/03 19:28
4F:→ WolfLord:不用套装STARTUP程式就要自己勤劳一点去初始化CPU 04/03 19:28
5F:→ nfs258147:感谢你们的帮忙! 04/03 20:05