找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1862|回复: 4
打印 上一主题 下一主题
收起左侧

请大侠们帮忙看看这个通过3秒单片机定时器对输入脉冲个数判断

[复制链接]
跳转到指定楼层
楼主
ID:815936 发表于 2020-9-1 21:27 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
如果3秒内输入的脉冲个数小于2,led点亮输出,如果大于2继续检测。

Screenshot_20200901_211515.jpg (567.86 KB, 下载次数: 74)

Screenshot_20200901_211515.jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2020-9-2 06:08 | 只看该作者
P3.2外部中断,下降沿触发。3秒计时周期,脉冲个数小于2,led点亮输出,否则led熄灭。

#include "reg51.h"

sbit LED=P2^1;

unsigned char num=0,count=0;

void main()
{
        TMOD= 0x01;           //设置定时器模式
        TL0 = 0xB0;                //50毫秒@12.000MHz
        TH0 = 0x3C;
        TR0 = 1;                        //定时器0开始计时
        ET0 = 1;                        //开定时器0中断
        IT0 = 1;                 //外部中断下降沿触发
        EX0 = 1;                        //开外部中断0
        EA = 1;                         //开总中断
        while(1);
}

void Timer0() interrupt 1
{
        TL0 = 0xB0;                //设置定时初值
        TH0 = 0x3C;                //设置定时初值
        count++;
        if(count>=60)        //3秒
        {
                count=0;
                if(num>=2)
                {
                        LED=0;
                        num=0;
                }
                else LED=1;
        }
}

void exint0() interrupt 0
{
    num++;
}
回复

使用道具 举报

板凳
ID:213173 发表于 2020-9-2 06:30 | 只看该作者
本帖最后由 wulin 于 2020-9-2 06:34 编辑

定时器/计数器1外部脉冲高电平计数。3秒计时周期,脉冲个数小于2,led点亮输出,否则led熄灭。

#include "reg51.h"

sbit LED=P2^1;

unsigned char count=0;

void main()
{
        TMOD= 0x51;           //设置定时器模式
        TL0 = 0xB0;                //50毫秒@12.000MHz
        TH0 = 0x3C;
        TL1 = 0;
        TH1 = 0;
        TR0 = 1;                        //定时器0开始计时
        TR1 = 1;                        //定时器0开始计数
        ET0 = 1;                        //开定时器0中断
        EA = 1;                         //开总中断
        while(1);
}

void Timer0() interrupt 1
{
        TL0 = 0xB0;                //设置定时初值
        TH0 = 0x3C;                //设置定时初值
        count++;
        if(count>=60)        //3秒
        {
                count=0;
                if(TL1>=2)
                {
                        LED=0;
                        TL1=0;
                }
                else LED=1;
        }
}

回复

使用道具 举报

地板
ID:235954 发表于 2020-9-2 09:51 | 只看该作者
截屏会更好
回复

使用道具 举报

5#
ID:815936 发表于 2020-9-2 10:27 来自手机 | 只看该作者
wulin 发表于 2020-9-2 06:08
P3.2外部中断,下降沿触发。3秒计时周期,脉冲个数小于2,led点亮输出,否则led熄灭。

#include "reg51. ...

谢谢师傅指点
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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