stc单片机问题请教
最近在用STC12L204EA单片机做个小项目,遇到一个奇怪的问题,目前还没有解决,请知道解决办法的指导一下,谢谢!问题是这样的:我写了一个简单的测试led显示的程序,向单片机的io口每隔1秒,置1,再置0,原理上led应该是每隔1秒闪烁一次
可实际上是如果程序中我先置1,再置0,上电led就一直亮;如果如果程序中我先置0,再置1,上电led就一直灭,如何解释?
1、程序我是放在while(1){..... }中执行的
2、该单片机是3.3v工作电压
3、下载程序我用的是usb转串口下载器,下载器和单片机接口相连的RXD,TXD下载时电平可能会达到5v,因为usb转串口下载器
用的是电脑USB接口供电,电压是5v,但是下载程序时能够成功的 延时写没?亮灭之间 肯定你的延时程序错了
延时1秒,,,看看你的Delay里面参数是不是超限了,比如形参用的是 char型 256, 你却来个 1000.死在那出不来 linucos 发表于 2012-8-31 09:34 static/image/common/back.gif
延时写没?亮灭之间
写了,时间是一秒,这个时间肯定是没问题,保证是在1秒左右,不会是特别小而出现在人眼暂留效应之内 贴程序出来呀,不然原因就多了去了!! a_2012_m 发表于 2012-8-31 09:54 static/image/common/back.gif
写了,时间是一秒,这个时间肯定是没问题,保证是在1秒左右,不会是特别小而出现在人眼暂留效应之内 ...
嗯,对,上代码瞧瞧! 本帖最后由 a_2012_m 于 2012-8-31 10:43 编辑
函数如下
while(1)
{
// if(int_cnt>500)
// {
// LED=0;
// int_cnt=0;
// }
// else if(int_cnt>250)
// {
// LED=1;
// }
// else
// {
// LED=0;
// }
LED=1;
for(i=0;i<250;i++)
{
// LED=1;
Delayms(4);
}
LED=0;
for(i=0;i<250;i++)
{
// LED=0;
Delayms(4);
}
}
延时函数
void Delayms(unsigned int T)
{
unsigned int n = 500;
n=500*T;
while (n--)
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
} 楼主在n = 500*T,T是2字节,再乘2字节,,这里n也是2字节的,,应该不对吧 变量T是延时的ms数,例如4ms延时,T就取4
虽然T和n都是2字节,只要500*T的结果不溢出,就不会有问题 本帖最后由 BXAK 于 2012-8-31 13:56 编辑
送你一个STC 1T系列自适应延时函数
#defineCPU_FOSC12000000UL//不同晶振修改此处,延时函数会自动适应,允许晶振范围:1MHz ~ 45MHz
/*****************************************************
函数: STC 1T系列延时ms毫秒(STC 1T系列自适应 1MHz ~ 45MHz )
*****************************************************/
void ys_ms( unsigned int ms )
{
unsigned int n;
do{
n = CPU_FOSC*64/896750;
while( --n );
}while( --ms );
} 原因就是,延时不够,在LED=0或者LED=1还没看到效果时。LED又被置位,所以你一直看到的是while(1)进去后的第一个状态(亮或者灭) parkdom 发表于 2012-8-31 14:11 static/image/common/back.gif
原因就是,延时不够,在LED=0或者LED=1还没看到效果时。LED又被置位,所以你一直看到的是while(1)进去后的 ...
之前我用定时器做延时,也会出现同样的问题,很难说是延时不够的原因,你也可以看看我上面给出的延时函数,延时应该是够的,我单片机使用的是内部晶振22.1184M a_2012_m 发表于 2012-8-31 14:25 static/image/common/back.gif
之前我用定时器做延时,也会出现同样的问题,很难说是延时不够的原因,你也可以看看我上面给出的延时函数 ...
多改下代码测试就知道了,考虑晶振~ 不是啥大问题 我刚试了,这个程序没有问题的 zbm2007 发表于 2012-8-31 15:32 static/image/common/back.gif
我刚试了,这个程序没有问题的
你用的是哪款单片机试的? STC12C5A60S2 12M晶振 zbm2007 发表于 2012-8-31 15:42 static/image/common/back.gif
STC12C5A60S2 12M晶振
我是在stc15l204ea单片机上试的,没有达到预期效果,这就说明不是程序问题,是单片机问题了
页:
[1]