我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 626|回复: 3

简单C51电机控制

[复制链接]

该用户从未签到

21

主题

24

回帖

0

积分

二级逆天

积分
0

终身成就奖特殊贡献奖

发表于 2020-3-25 13:48:37 | 显示全部楼层 |阅读模式
#include<reg51.h>
#define YC 10       //闭合延迟时间
#define QDTIME 60   //工作时间
#define u8 unsigned char
#define u16 unsigned int
sbit K1a=P1^0;      //开关引脚a
sbit K1b=P1^1;      //开关引脚b
sbit OUT=P2^0;      //输出引脚
u8 Tm=0;            //状态检测,0位初始状态,1为延迟状态,2为输出状态,3为待复位状态
u16 i=0,j=0;        //计时变量
void Tim_init()     //定时器0初始化函数
{
        TMOD = 0x01;  //定时器0设置16位计时器
        TH0 = 0x0FC;  //高值1ms
        TL0 = 0x18;   //低值1ms
        EA = 1;       //开总中断
        ET0 = 1;      //开定时器中断   
}

void Tim() interrupt 1//计时器中断
{
        TH0 = 0x0FC;  //重装初始值
        TL0 = 0x18;
        i++;          //ms计时累加
}
   
void S1()
{
    if(K1b==0&&Tm==0)//启动状态判断,必须是复位状态,且开关闭合。
    {
        TR0=1;        //定时器开始工作
        Tm=1;       //进入状态1开始延迟
    }
    if(K1b==1&&Tm==3)//复位状态判断,条件必须打开开关,且一次任务完成。
    {
        Tm=0;      //复位状态值
    }
}

void main()
{
    K1a=0;    //开关一端低电平
    OUT=0;  //输出低电平,电机停止
    Tim_init();     //定时器初始化
    while(1)       //主循环
    {
        S1();      //按键检测
        if(i==1000)//1S计时
        {
            j++;   //秒计时累加
            i=0;
        }
        if(j>YC&&Tm==1)  //如果检测到j大于10则进入输出状态
        {
            OUT=1;      //进入输出状态
            Tm=2;       //设置输出状态为2,即输出状态
            j=0;        //秒计时清零
        }
        if(j>QDTIME&&Tm==2)//如果检测到j大于60则且在输出状态,则停止输出进入待复位状态
        {
            OUT=0;      //停止输出
            Tm=3;       //进入待复位状态
            j=0;        //秒计时清零
            i=0;       //ms计时清零
            TR0=0;      //关闭计时器
        }
    }        
}
   
回复

使用道具 举报

  • TA的每日心情
    开心
    4 天前
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    101

    主题

    163

    回帖

    960

    积分

    二级逆天

    积分
    960

    社区居民终身成就奖金点子奖

    QQ
    发表于 2020-3-25 17:49:05 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 16:35
  • 签到天数: 107 天

    [LV.6]常住居民II

    5

    主题

    6751

    回帖

    1万

    积分

    三级逆天

    积分
    14185

    终身成就奖特殊贡献奖原创先锋奖

    发表于 2020-3-26 08:31:45 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    2

    主题

    1541

    回帖

    0

    积分

    二级逆天

    积分
    0

    终身成就奖优秀斑竹奖

    发表于 2020-3-26 09:17:31 | 显示全部楼层
    回复

    使用道具 举报

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

    本版积分规则

    论坛开启做任务可以
    额外奖励金币快速赚
    积分升级了


    Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

    本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

    平平安安
    TOP
    快速回复 返回顶部 返回列表