微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求单片机C程序

求单片机C程序

时间:10-02 整理:3721RD 点击:

要求:1、按下按钮K后,5个LED灯由D1、D2、D3、D4、D5依次点亮,间隔1秒,最后全亮;
2、再次按下按钮K后,5个LED灯由D5、D4D、D3、D2、D1依次熄灭,间隔1秒,最后全灭;


//======================================================
//假设单片机针脚输出高电平点亮LED,单片机针脚输出低电平使LED灭掉
//当K键按下时,对应K键的单片机针脚收到低电平
//=======================================================
                                                                                  
#include<reg52.h>
#include<intrins.h>
//===========定义D1~D5,K对应针脚===============
sbit D1=P2^0;//定义D1对应针脚
sbit D2=P2^1;//定义D2对应针脚,以下类似
sbit D3=P2^2;
sbit D4=P2^3;
sbit D5=P2^4;
sbit K=P0^0;

//==========延时1s函数==================
void delay()   //误差 0us
{
    unsigned char a,b,c;
    for(c=167;c>0;c--)
        for(b=171;b>0;b--)
            for(a=16;a>0;a--);
    _nop_();  //if Keil,require use intrins.h
}
//==========单片机初始化程序============
void init()
{
        D1=D2=D3=D4=D5=0;//各个LED为全灭状态
        while(!K);//等待K键放开;一开始按住K键,单片机不能正常工作
}
//=========D1到D5依次点亮程序===========
void on()
{
        D1=1;
        delay();
        D2=1;
        delay();
        D3=1;
        delay();
        D4=1;
        delay();
        D5=1;
        delay();
}
//=============D5到D1熄灭程序=============
void off()
{
        D5=0;
        delay();
        D4=0;
        delay();
        D3=0;
        delay();
        D2=0;
        delay();
        D1=0;
        delay();
}
//==========================================
//                        主函数
//==========================================
void main()
{
        init();//等待单片机初始化完成
        while(1)
        {
        while(K);//等待K键被按下
        on();
        while(K);
        off();
        }
}

#include<reg52.h>
#define uchar unsigned char
#define  uint unsigned int
sbit k1=P2^0;
uint num;
uchar cishu;
uchar 0xfe,0xfd,0xfb,0xf7,0xef,0x00;
void main()
{
    TMOD=0x01;
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
    ET0=1;
    EA=1;
    TR0=1;
    num=0;
    while(1)
    {
        if(k1==0)
       {
            while(k1==0);
            cishu++;
         if(cishu==1)
         {
               if(num==0)
               {
                    P1=0xfe;
               }
               if(num==20)
               {
                    P1=0xfc;
               }
               if(num==40)
               {
                    P1=0xf8;
               }
               if(num==60)
               {
                    P1=0xf0;
               }
               if(num==80)
               {
                    P1=0xe0;
               }
               if(num==100)
               {
                    P1=0x00;
                  
               }
       if(cishu==2)
       {
               if(num==120)
               {
                    P1=0xf0
               }
               if(num==140)
               {
                    P1=0xf8;
               }
               if(num==160)
               {
                    P1=0xfc;
               }
               if(num==180)
               {
                    P1=0xfe;
               }
               if(num==200)
               {
                    P1=0xff;                       num=0;
               }
            }
             if(cishu==3)
            {
                cishu=0;
            }
        }
    }
}
void t0() interrupt 1
{
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
    TR0=1;
    num++;
}


我的文本格式有问题,能不能传一个文本附件给我啊?谢谢!

自己粘贴复制吧,实在不行就直接打,程序的注释我也都写有在上面,看懂应该不难

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top