作者SMJeremy (幹 嘛要下雨)
看板Electronics
標題[問題] 8051用keil編譯 無法運作之詭異問題
時間Tue Dec 9 02:15:11 2008
請問各位先進一個很急的問題 謝謝
我有個很簡單的程式作測試用
就是要讓51的P2.0上的LED閃爍
但是用keil C編譯完的hex燒錄後
發現無法運作 但是若用手一直碰著51的第19隻腳就可以正常運作
若手放開又不能運作 已經確定12MHz震盪器與兩個30pf電容是好的
改成組語寫 用x8051與link組譯卻又可以正常運作 不必用手碰
這現象很詭異 我在猜想是不是keil C的什麼環境設定出了問題?
但我確認過51的型號、Xtal有改成12MHz跟24MHz測試過都不行
C的原始程式如下:
#include<reg51.h>
sbit LED=P2^0;
void delay1ms(char);
main()
{
while(1)
{
LED=1;
delay1ms(1000);
LED=0;
delay1ms(500);
}
}
void delay1ms(char x)
{
char i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.80.135.23
1F:推 beagle:pin19 不就是 crystal in 嗎? 有沒有加電容? 12/09 02:25
2F:→ beagle:如果石英不起振當然整個單晶片都不會跑... 12/09 02:28
3F:→ beagle:對了, 請問各位這個問題要如何診斷? 我只會用示波器看... 12/09 02:28
4F:→ beagle:但是每次程式不跑就搬示波器出來實在很累, 舊型的好重 12/09 02:29
5F:推 ksmrt0123:delay1ms() 的問題... char 的 range 是 -128...127 12/09 03:17
6F:推 ksmrt0123:摸 Xin 就會"正常" 可能是 51 會不定期 reset... 12/09 03:20
7F:推 mosquito520:有改用SDCC編譯試看看嗎?? 12/09 05:33
8F:推 a93620037:to beagle:可以試看看用電錶量~0表示不起振~有值表示起 12/09 08:04
9F:→ a93620037:振...因為我常常用電錶量看看有沒有輸出PWM...應該大同 12/09 08:05
10F:→ a93620037:小異吧XDD 12/09 08:06
11F:推 paullai:不知道能不能用AVID找共振頻 @@ 12/09 09:56
12F:→ SMJeremy:有加電容...用12MHz 加兩顆30pf電容 照書接的........... 12/09 10:41
13F:→ beagle:可以的話用示波器量量看... 你有 reset 嗎? 12/09 14:12
14F:推 mosquito520:對了...如果懷疑是keilC的問題... 12/09 15:06
15F:→ mosquito520:把asm貼到網路上給大家看看??? 12/09 15:06
16F:推 TroyLee:什麼叫正常運作 什麼叫無法運作? char塞1000不太對喔 12/09 23:20
17F:→ TroyLee:也許是手摸上去clock rate降低, 感覺好像正常罷了 12/09 23:21
18F:推 ksmrt0123: ^^^^^^^^^^^^^^^^^^^^^^ Good Guess! 12/10 01:40
20F:→ sneak: //daxiv.com 01/04 21:50