标题: 单片机LED灯闪亮问题 [打印本页]

作者: molo    时间: 2019-9-21 10:41
标题: 单片机LED灯闪亮问题
大家好!请教各位大侠一下:
在STC单片机上,原来控制LED打开用以下语句:
case 0x01: OUT1=0;break;
想把这个修改成亮1秒灭1秒,怎么修改呢?加延时还是加定时器?
给个参考示例,谢谢!


作者: 来51学习的    时间: 2019-9-21 12:33
如果没有别的控制,加延时的方式最方便
作者: 166864646883    时间: 2019-9-21 12:57
延时定时器都可以,延时的话只能大概,不是很准确,定时器的话比较准确
作者: 166864646883    时间: 2019-9-21 12:58
比如延时的:
OUT1=0;
for(i=0;i<30000;i++);
OUT1=1;
for(i=0;i<30000;i++);
作者: devcang    时间: 2019-9-21 13:30
定时器、延时,都可以做到的。
~~~~~~~~
作者: angmall    时间: 2019-9-21 13:52
你这个程序不完整
问题描述太少,不好贸然回答

作者: molo    时间: 2019-9-21 16:01
我是想让LED一直闪着,用延时好像一段时间就会停下来。
作者: molo    时间: 2019-9-21 16:11
不好意思,没说清楚,是想修改成亮1秒灭1秒,一直循环。
作者: 海里蛐蛐    时间: 2019-9-21 16:26
估计楼主是想通过 switch判断变量 来控制led。这个开个定时中断每隔1s改变判断变量就可以了。
作者: qq603599910    时间: 2019-9-21 16:39
没有相关任务,软件延时最直接也最简单易懂.

void Delay1000ms()                //@11.0592MHz
{
        unsigned char i, j, k;

        _nop_();
        _nop_();
        i = 43;
        j = 6;
        k = 203;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}
作者: 文凤轩    时间: 2019-9-21 17:09
加延时就行了
作者: molo    时间: 2019-9-21 17:25
谢谢各位,我再琢磨琢磨!
作者: qq603599910    时间: 2019-9-21 21:22
定义LED变量,然后默认LED=1,main函数里加while循环,启动延时后加一行 LED=!LED ,每次取反,这样就能循环亮灭闪动了.从基本的教程开始学习一下,最初步的教程就是LED的亮和闪亮开始.
作者: hantu    时间: 2019-9-21 21:58
用中断吧,一开中断就让它亮灭不停,关中断它才停下。
作者: weijoyer    时间: 2019-9-22 00:23
简单的直接加软件延时,如果有控制用定时器提高效率
作者: 你是我爸爸    时间: 2019-9-22 19:50
定时器吧,用定时器限时一秒,再在主函数判定循环取反就OK啦
作者: molo    时间: 2019-9-22 21:15
谢谢各位答复,看来用定时器比较好。
作者: spendell    时间: 2019-9-22 22:23
延时不准,定时器准一些。
作者: 1539905269    时间: 2019-9-23 11:38
加延迟会造成程序堵塞 建议开启定时器  每次取反输出




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1