jiongeyes 发表于 2010-12-16 09:45:51

还是STC12C2052AD的问题,好像都不运行

#include<stc12c2052ad.h>
#include<intrins.h>

sbit BUZ = P1^4;
sbit LED_G = P1^6;
sbit LED_R = P1^7;

//==========================
//延时
//==========================
void delay(unsigned char k)
{
        unsigned char i;

        for(;k>0;k--)
          for(i=255;i>0;i--);
}

//==========================
//测试程序
//==========================
void main(void)
{
        unsigned char i;
        BUZ = 0;
        LED_R = 1;
        LED_G = 1;
       
        for(i=6;i>0;i--)
        {
                LED_R = ~LED_R;
                LED_G = ~LED_G;
        //        BUZ = ~BUZ;
                delay(5);
        }
}

这是我写的程序。但是下载到STC12C2052AD之后,灯是一直亮的,不会闪三下就灭。应该是延时那一块不会动,但是我的延时看来看去都好像没有错误,请大家给我指正一下

lgb728 发表于 2010-12-16 09:53:03

你的main()运行时间太短了将for(i=6;i>0;i--)改为while(1) 试一哈看看。

jiongeyes 发表于 2010-12-16 09:53:52

回复【1楼】lgb728
-----------------------------------------------------------------------

也试过了,灯就是一直亮不会闪

eaglelpx 发表于 2010-12-16 10:00:17

在keil里运行调试下最简单了,可以看出是哪里问题

laoxizi 发表于 2010-12-16 10:18:04

这个问题貌似跟STC12c2052ad一毛钱关系都没有。
你只是for了几个回合,最后停留在了亮的状态。
再有就是加长delay时间。

amazing030 发表于 2010-12-16 10:29:56

就是延时太短了,你Delay(1000)试试,记得改参数类型

flame0510 发表于 2010-12-16 10:50:38

回复【1楼】lgb728
你的main()运行时间太短了将for(i=6;i&gt;0;i--)改为while(1) 试一哈看看。

-----------------------------------------------------------------------

另外delay的时间还有再加长,太短了根本就看不出来

xjxxz 发表于 2010-12-16 12:39:11

LED_R = ~LED_R;
改成
LED_R = !LED_R;
试试看

xiaorenren 发表于 2010-12-16 13:54:33

延时太短了

vernalwind 发表于 2010-12-16 18:37:41

void delay(unsigned char k)
{
unsigned char i;

for(;k>0;k--)
for(i=255;i>0;i--);
}
=======================
假设是6M晶振 12T的单片机
delay(5)延时是5MS多一点
再加上
for(i=6;i>0;i--)
也就 30MS
在30MS内 点亮3次 灭3次 你肯定看不出来的
还有 STC是 1T的 时间更短

linxquan 发表于 2010-12-16 19:10:25

把i改成unsigned int型,改大延时时间度试
STC我用过觉得手册太难懂,我直接把它当普通8051来用

jiongeyes 发表于 2010-12-17 09:26:47

谢谢各位,我加长了延时就看出来了,呵呵,是自己太不小心

a403588784 发表于 2011-11-6 21:54:19

程序没有进入死循环   执行完后停留在灯亮时    所以看到的灯是常亮。
页: [1]
查看完整版本: 还是STC12C2052AD的问题,好像都不运行