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