还是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之后,灯是一直亮的,不会闪三下就灭。应该是延时那一块不会动,但是我的延时看来看去都好像没有错误,请大家给我指正一下 你的main()运行时间太短了将for(i=6;i>0;i--)改为while(1) 试一哈看看。 回复【1楼】lgb728
-----------------------------------------------------------------------
也试过了,灯就是一直亮不会闪 在keil里运行调试下最简单了,可以看出是哪里问题 这个问题貌似跟STC12c2052ad一毛钱关系都没有。
你只是for了几个回合,最后停留在了亮的状态。
再有就是加长delay时间。 就是延时太短了,你Delay(1000)试试,记得改参数类型 回复【1楼】lgb728
你的main()运行时间太短了将for(i=6;i>0;i--)改为while(1) 试一哈看看。
-----------------------------------------------------------------------
另外delay的时间还有再加长,太短了根本就看不出来 LED_R = ~LED_R;
改成
LED_R = !LED_R;
试试看 延时太短了 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的 时间更短 把i改成unsigned int型,改大延时时间度试
STC我用过觉得手册太难懂,我直接把它当普通8051来用 谢谢各位,我加长了延时就看出来了,呵呵,是自己太不小心 程序没有进入死循环 执行完后停留在灯亮时 所以看到的灯是常亮。
页:
[1]