作者SMJeremy (干 嘛要下雨)
看板ASM
标题[问题] 8051用keil C无法运作之诡异问题
时间Tue Dec 9 02:13:15 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:推 ruemann:第19只脚是不是reset pin? 12/09 03:40
2F:→ shuiyuan:void delay1ms(char x)改成void delay1ms(int x)试试看 12/09 09:35
3F:→ shuiyuan:因为在main内的delay1ms(1000)已经超过char的最大值 12/09 09:36
4F:→ SMJeremy:第18,19只脚是震荡器加电容的脚位 我试试楼上方法 谢谢 12/09 10:40
5F:推 saram:将两个电容器拿掉. 这没影响的. 01/25 00:37