久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1877|回復: 5
打印 上一主題 下一主題
收起左側

簡單的交通燈,為什么進不了中斷

[復制鏈接]
跳轉到指定樓層
樓主
#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, 下載次數: 33)

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

5#
ID:213173 發表于 2018-2-22 09:48 | 只看該作者
因為你使用的數據類型與宏定義數據類型不一致,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 ++;
    }
}
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕中文字幕 | 亚洲精久 | 电影午夜精品一区二区三区 | 精品在线一区 | 亚洲欧美中文日韩在线v日本 | 黄色日本视频 | 在线91| 国产精品久久久久久久久久久免费看 | 国产精品免费av | 亚洲精品www久久久久久广东 | 国产日韩欧美精品一区二区 | 二区中文 | 久久成人精品视频 | 欧美8一10sex性hd | 亚洲国产精品久久久 | 国产福利在线视频 | 欧美日韩亚洲系列 | 国产精品资源在线 | 婷婷免费视频 | 亚洲福利 | 久草在线| 亚洲免费在线观看av | 成人欧美日韩一区二区三区 | 国产日产精品一区二区三区四区 | 九九色综合 | 久久久久国产精品一区二区 | 欧美性成人 | 中文字幕在线视频精品 | 在线看91 | 韩日在线视频 | 久久久久久电影 | 免费黄色在线 | 日韩av在线免费 | www.狠狠干 | 国产精品久久久久久久久 | 成人国产在线视频 | 狠狠色网 | 久久久久国产精品午夜一区 | 日韩亚洲一区二区 | 国产成人免费一区二区60岁 | 久久精品超碰 |