欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2617|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

用按鍵實(shí)現(xiàn)流水燈左移,右移,99數(shù)碼管倒計(jì)時(shí),和全滅

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:563424 發(fā)表于 2019-11-26 18:11 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include<reg52.h>

sbit ADDR0 = P2^2;
sbit ADDR1 = P2^3;
sbit ADDR2 = P2^4;
sbit KEY1 = P1^0;
sbit KEY2 = P1^1;
sbit KEY3 = P1^2;
sbit KEY4 = P1^3;

unsigned char code LedChar[] = {0xc0, 0xf9, 0xa4, 0xB0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90,0x88, 0x83,0xc6,0xa1, 0x86, 0x8e};
unsigned char  LedBuff[] = {0xff,0xff};

unsigned char i = 0;
unsigned char cnt = 0;
unsigned char left = 0;
unsigned char right = 0;
unsigned long sec = 0;         /*算流水燈的*/
unsigned char cd = 0;/*倒計(jì)時(shí)*/
unsigned int mov = 0;
unsigned char flag1s = 0;

bit KeySta = 1;
void cutdown()
{
       
}

void main()
{
        bit backup = 1;



        unsigned int time = 99;


        EA = 1;
        TMOD = 0X01;
        TH0 = 0XF8;        /*2ms*/
        TL0 = 0XCD;
        ET0 = 1;
        TR0 = 1;
        P1 = 0X7f;

        while(1)
        {
       
                        if(KeySta != backup)
                        {
                                if(backup ==
                                        cnt++;
                                }0)
                                {
                        backup = KeySta;
                        }

                        if(cnt == 1) /*流水燈左移*/
                                {
                                        left = 1;        /*左移標(biāo)志位*/
                                }
                        if(cnt == 2)/*流水燈右移*/
                                {
                                        right = 1;/*右移標(biāo)志位*/
                                }
                        if(cnt == 3)/*99秒倒計(jì)時(shí)*/
                                {
                                        cd = 1;
                                          if(flag1s == 1)
                                        {
                                                flag1s = 0;
                                                time--;
                                                LedBuff[0] = LedChar[time%10];/*數(shù)碼管顯示*/
                                                LedBuff[1] = LedChar[time/10];
                                        }
                                }
                        if(cnt == 4)/*全滅*/
                                {
                                       
                                        P0 = 0X00;
                                        P2 = 0Xff;
                                        left = 0;
                                        right = 0;
                                         cd = 0;
                                        cnt = 0;
                                               
                                }
                  
        }
}

void interruptTimer() interrupt 1
{        static unsigned char mov1 = 0;
        static unsigned char keybuf = 0xFF;

        TH0 = 0XF8;
        TL0 = 0XCD;
        keybuf = (keybuf<<1) | KEY4;
        if(keybuf == 0x00)
        {
                KeySta = 0;
        }
        else if(keybuf == 0xff)
        {
                KeySta = 1;
        }

        sec++;
        if(sec >= 500)
        {  
                sec = 0;
                flag1s = 1;

                if(left)
                {        P2 = 0XFF;
                        P2 = ~(0x01<<mov);
                        mov++;
                       left = 0;
                }
                if(right)
                {
                        P2 = 0XFF;
                        P2 = ~(0x80>>mov1);
                        mov1++;
                        right = 0;
                }
       
        }
        P0 = 0X00;
        if(cd)
        {        P0 = 0x00;/*刷新*/
                P2 = 0XFF;
                switch(i)
                {
                        case 0 : ADDR2 = 0 ; ADDR1 = 0 ; ADDR0 = 0; i++; P0 = ~LedBuff[0]; break;
                        case 1 : ADDR2 = 0 ; ADDR1 = 0 ; ADDR0 = 1; i=0; P0 = ~LedBuff[1]; break;
                }
       
        }
        else P0 = 0X00;

}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表