找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 416|回复: 4
收起左侧

单片机使用定时器中断控制LED先200ms闪烁三次,再500ms闪烁三次,再200ms....

[复制链接]
ID:1130312 发表于 2024-8-12 17:02 | 显示全部楼层 |阅读模式
要求使单片机的定时器中断控制LED先200ms闪烁三次,再500ms闪烁三次,再200ms闪烁三次,跪求一下思路
回复

使用道具 举报

ID:1109793 发表于 2024-8-13 07:32 | 显示全部楼层
弄个计数器,每50毫秒++,然后在计数器==2时反转输出,==4再反转,然后==6再反转,……==10再反转,==15再反转……
回复

使用道具 举报

ID:364201 发表于 2024-8-13 08:03 | 显示全部楼层
定义三个变量就可以了
回复

使用道具 举报

ID:137736 发表于 2024-8-13 11:33 | 显示全部楼层
定义三个变量,在定时器中断中累加。主程序循环判定三个变量,到时间清零并反转LED电平。
回复

使用道具 举报

ID:1130484 发表于 2024-8-13 21:58 | 显示全部楼层
本帖最后由 xing_121 于 2024-8-14 20:01 编辑

思路:设个变量j,j为Led闪烁的次数,将j平分,每部分为6,即不管200ms还是500msLed都会闪烁三次(亮灯加上灭灯为一次),然后定义i,为200ms和500ms的时间标志位,每次轮完一次大周期,记得要清零,不过j不能等于0,因为j是从1开始计的。

#include <reg52.h>

sbit Led = P2^0;

/*********
函 数 名:void Timer0Init(void)
函数功能:初始化
参    数:none
返    回:none
**********/
void Timer0Init(void)                //1毫秒@12.000MHz
{
        TMOD &= 0xF0;                //设置定时器模式
        TMOD |= 0x01;                //设置定时器模式
        TL0 = 0x18;                //设置定时初始值
        TH0 = 0xFC;                //设置定时初始值
        TF0 = 0;                //清除TF0标志
        TR0 = 1;                //定时器0开始计时
        ET0 = 1;
        EA = 1;
}

void main()
{
        Timer0Init();
        while(1);
}

/**********
函 数 名:void Timer0() interrupt 1
函数功能:
参    数:none
返    回:none
*********/
void Timer0() interrupt 1  //1ms
{
        static unsigned char j=1;
        static unsigned int i;
        
        TL0 = 0x18;                //设置定时初始值
        TH0 = 0xFC;                //设置定时初始值
        if(j <= 6)
        {
                if(++i >= 200)
                {
                        i = 0;
                        j++;
                        Led =~ Led;
                }
        }
        else
        {
                if(++i >= 500)
                {
                        i = 0;
                        j++;
                        Led =~Led;
                }
        }
        if(j > 12)
        {
                j = 1;
        }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表