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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

簡單的交通燈,為什么進(jìn)不了中斷

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
#include <reg52.h>

#define u8 unsigned int
#define u16 unsigned char
#define GPIO_dig P0
#define GPIO_traffic P1

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

sbit RED_1=P1^0;
sbit GREEN_1=P1^1;
sbit RED_2=P1^2;
sbit YELLOW_2=P1^3;
sbit GREEN_2=P1^4;
sbit RED_3=P1^5;
sbit YELLOW_3=P1^6;
sbit GREEN_3=P1^7;
sbit RED_4=P3^1;
sbit GREEN_4=P3^0;

u8 code smgduan[17]=
{0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};

u8 DisplayData[8];
u8 second;

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

void DigDisplay()
{
    u8 i;
    for(i=0; i<8; i++)
    {
        switch(i)
        {
            case(0):
                LSA=0;LSB=0;LSC=0; break;//顯示第0位
            case(1):
                LSA=1;LSB=0;LSC=0; break;//顯示第1位
            case(2):
                LSA=0;LSB=1;LSC=0; break;//顯示第2位
            case(3):
                LSA=1;LSB=1;LSC=0; break;//顯示第3位
            case(4):
                LSA=0;LSB=0;LSC=1; break;//顯示第4位
            case(5):
                LSA=1;LSB=0;LSC=1; break;//顯示第5位
            case(6):
                LSA=0;LSB=1;LSC=1; break;//顯示第6位
            case(7):
                LSA=1;LSB=1;LSC=1; break;//顯示第7位            
        }
        GPIO_dig=DisplayData[i];
        delay(100);
        GPIO_dig=0x00;
    }
}

void Time0Init()
{
    TMOD|=0x01;
    TH0=0xFC;
    TL0=0x18;
    EA=1;
    ET0=1;
    TR0=1;
}

void main()
{
    second=1;
    Time0Init();
    while(1)
    {
        if(second==70)
        {
            second=1;
        }
        if(second < 31)
        {
            DisplayData[0] = 0x00;
            DisplayData[1] = 0x00;
            DisplayData[2] = smgduan[(30 - second) % 100 / 10];
            DisplayData[3] = smgduan[(30 - second) %10];
            DisplayData[4] = 0x00;
            DisplayData[5] = 0x00;
            DisplayData[6] = DisplayData[2];
            DisplayData[7] = DisplayData[3];
            DigDisplay();

            GPIO_traffic=0xff;
            RED_4=1;
            GREEN_4=1;

            GREEN_2=0;
            GREEN_1=0;
            RED_3=0;
            RED_4=0;
        }        

        else if(second < 36)
        {
            DisplayData[0] = 0x00;
            DisplayData[1] = 0x00;
            DisplayData[2] = smgduan[(35 - second) % 100 / 10];
            DisplayData[3] = smgduan[(35 - second) %10];
            DisplayData[4] = 0x00;
            DisplayData[5] = 0x00;
            DisplayData[6] = DisplayData[2];
            DisplayData[7] = DisplayData[3];
            DigDisplay();

            GPIO_traffic=0xff;
            RED_4=1;
            GREEN_4=1;

            GREEN_1=0;
            YELLOW_2=0;
            YELLOW_3=0;
            RED_4=0;
        }        

        else if(second < 66)
        {
            DisplayData[0] = 0x00;
            DisplayData[1] = 0x00;
            DisplayData[2] = smgduan[(65 - second) % 100 / 10];
            DisplayData[3] = smgduan[(65 - second) %10];
            DisplayData[4] = 0x00;
            DisplayData[5] = 0x00;
            DisplayData[6] = DisplayData[2];
            DisplayData[7] = DisplayData[3];
            DigDisplay();

            GPIO_traffic=0xff;
            RED_4=1;
            GREEN_4=1;
            
            RED_1=0;
            RED_2=0;
            GREEN_3=0;
            GREEN_4=0;
        }        

        else
        {
            DisplayData[0] = 0x00;
            DisplayData[1] = 0x00;
            DisplayData[2] = smgduan[(70 - second) % 100 / 10];
            DisplayData[3] = smgduan[(70 - second) %10];
            DisplayData[4] = 0x00;
            DisplayData[5] = 0x00;
            DisplayData[6] = DisplayData[2];
            DisplayData[7] = DisplayData[3];
            DigDisplay();

            GPIO_traffic=0xff;
            RED_4=1;
            GREEN_4=1;
            
            YELLOW_2=0;
            RED_1=0;
            YELLOW_3=0;
            GREEN_4=0;   
        }
    }
}

void Time0() interrupt 1
{
    static u16 a;
    TH0=0xFC;
    TL0=0x18;
    a++;
    if(a == 1000)
    {
        a=0;
        second ++;
    }
}



IMG20180221224747.jpg (4.86 MB, 下載次數(shù): 33)

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

使用道具 舉報(bào)

沙發(fā)
ID:284681 發(fā)表于 2018-2-21 22:50 | 只看該作者
數(shù)碼管不走路
回復(fù)

使用道具 舉報(bào)

板凳
ID:284696 發(fā)表于 2018-2-22 08:45 | 只看該作者
要開中斷的
回復(fù)

使用道具 舉報(bào)

地板
ID:231046 發(fā)表于 2018-2-22 08:46 | 只看該作者
void main()
{
    second=1;
  //  Time0Init();
不用調(diào)用
回復(fù)

使用道具 舉報(bào)

5#
ID:213173 發(fā)表于 2018-2-22 09:48 | 只看該作者
因?yàn)槟闶褂玫臄?shù)據(jù)類型與宏定義數(shù)據(jù)類型不一致,char是8位,int是16位.
#define u8 unsigned int
#define u16 unsigned char
void Time0() interrupt 1
{
    static u16 a;
    TH0=0xFC;
    TL0=0x18;
    a++;
    if(a == 1000)  //超過255
    {
        a=0;
        second ++;
    }
}
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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