找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求助:一个小程序

[复制链接]
跳转到指定楼层
楼主
ID:65170 发表于 2014-8-19 08:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我是一个才入门一周的学员,现想用STC单片机控制2个LED灯,达到这样的一个效果:单片机供电LED1点亮(点亮时间为5秒),5秒后熄灭,熄灭时间为2秒,2秒后接着LED2点亮,点亮时间为5秒,5秒后熄灭,熄灭时间2秒,2秒后LED1接着点亮循环下去。请求哪位师傅帮帮忙给我发一个程序,谢谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:2318 发表于 2014-8-19 13:13 来自手机 | 只看该作者
你昨天不是提问,咨询了一个类似的程序吗?我看你今天问的这个程序和昨天那个非常相似
回复

使用道具 举报

板凳
ID:2318 发表于 2014-8-19 13:13 来自手机 | 只看该作者
把那个程序稍微改动一点点就能实现的
回复

使用道具 举报

地板
ID:63839 发表于 2014-8-19 17:39 | 只看该作者
#include<stc12.h>                                 //头文件
#define uint unsigned int                 //宏定义
#define uchar unsigned char                 //同上
sbit led1=P1^1;                                         //根据自己的实际修改I/O
sbit led2=P1^2;                                         //
void init();                                         //        中断初始化函数
uchar num1,num2;                                 //       
void main()                                                 //        主函数
{                                                                 
        init();                                                 
        while(1)                                         
        {                                                                
                led1=0;                                         //        亮
                while(num1!=100);                 //        5秒
                num1=0;                                         //        归零
                led1=1;                                         //        灭
                while(num1!=40);                 //        2秒
                num1=0;                                         //        归零

                num2=0;
                led2=0;                                         //        同上
                while(num2!=100);                 //
                num2=0;                                         //
                led2=1;                                         //
                while(num2!=40);                 //
                num2=0;                                         //
        }
}
void init()                                                //
{
        TMOD=0x11;
        TH1=(65536-45872)/256;
        TL1=(65536-45872)%256;
        EA=1;
        ET1=1;
        TR1=1;
}
void T1_time()interrupt 3                 //        50毫秒的
{
        TH1=(65536-45872)/256;
        TL1=(65536-45872)%256;
        num1++;
        num2++;         
}
//我想要积分

评分

参与人数 2威望 +35 黑币 +21 收起 理由
admin + 35 + 20
SHANGYU + 1 很给力!

查看全部评分

回复

使用道具 举报

5#
ID:63839 发表于 2014-8-19 17:40 | 只看该作者
经测试ok
回复

使用道具 举报

6#
ID:19715 发表于 2014-8-19 18:42 | 只看该作者
用witch()语句
#include<reg52.h>                                 //头文件
#define uchar unsigned char                 //同上
sbit led1=P1^1;                                         //根据自己的实际修改I/O
sbit led2=P1^2;                                         //
void init();                                         //        中断初始化函数
uchar num,sec;                                 //        
void main()                                                 //        主函数
{                                                                 
        init();                                                
        while(1)
                {
                        switch(sec)
                       {
                            case 0:         led1=0; led2=1;
                            break;
                                case 5:         led1=1; led2=1;
                                break;
                                case 5+2:        led1=1; led2=0;
                                break;
                                case 5+2+5:        led1=1; led2=1;
                                break;
                                case 5+2+5+2: sec=0;
                                break;
                                default:
                                break;
                                }         
                }                                         
}
void init()                                                //
{
        TMOD=0x11;
        TH1=(65536-45872)/256;
        TL1=(65536-45872)%256;
        EA=1;
        ET1=1;
        TR1=1;
}
void T1_time()interrupt 3                 //        50毫秒的
{
        TH1=(65536-45872)/256;
        TL1=(65536-45872)%256;
                if(++num>=20)
                {
                 num=0;
                 sec++;
                }      
}

评分

参与人数 2威望 +20 黑币 +21 收起 理由
admin + 20 + 20 很给力!
SHANGYU + 1 很给力!

查看全部评分

回复

使用道具 举报

7#
ID:65170 发表于 2014-8-20 08:05 | 只看该作者
非常感谢师傅们的帮助!我应该好好认真学习!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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