作者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