找回密码
 立即注册

QQ登录

只需一步,快速开始

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

用单片机定时器控制led

[复制链接]
跳转到指定楼层
楼主
ID:380532 发表于 2018-8-23 22:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg52.h>

#define u16 unsigned int
#define u8  unsigned char
u16 s=0,id=0;
sbit k1=P3^1;
sbit k2=P3^0;

sbit L0=P2^0;
sbit L1=P2^1;
sbit L2=P2^2;
sbit L3=P2^3;
sbit L4=P2^4;
sbit L5=P2^5;
sbit L6=P2^6;
sbit L7=P2^7;

void delay(u16 i);
void key();
void tim0d();

void main()
{
        tim0d();
                key();
        while(1)
        {
                key();
                if(s>=400)
                {
                        s=0;
                        id++;
                }
               
                switch(id)
                {
                        case 0: L0=~L0;L7=1;break;
                        case 1: L1=~L1;L0=1;break;
                        case 2: L2=~L2;L1=1;break;
                        case 3: L3=~L3;L2=1;break;
                        case 4: L4=~L4;L3=1;break;
                        case 5: L5=~L5;L4=1;break;
                        case 6: L6=~L6;L5=1;break;
                        case 7: L7=~L7;L6=1;break;
                        case 8: L6=~L6;L7=1;break;
                        case 9: L5=~L5;L6=1;break;
                        case 10: L4=~L4;L5=1;break;
                        case 11: L3=~L3;L4=1;break;
                        case 12: L2=~L2;L3=1;break;
                        case 13: L1=~L1;L2=1;break;
                        case 14: L0=~L0;L1=1; id=0;break;
                }
               
        }
}

void delay(u16 i)
{
        while(i--);
}

void key()
{
        if(k1==0)
        {
                delay(1000);
                if(k1==0)
                {
                        TR0=1;
                }
        while(!k1);
        }
        if(k2==0)
        {
                delay(1000);
                if(k2==0)
                {
                        TR0=0;
                        id=0;
                        s=0;
                        P2=0xfe;
                }
        while(!k2);        
        }               
}
void tim0d()
{
        TMOD|=0X01;
        TH0=0XFC;
        TL0=0X18;
        ET0=1;
        EA=1;
        TR0=0;
}

void tim0() interrupt 1
{
        TH0=0XFC;
        TL0=0X18;
        s++;
}        


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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