欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
簡單的交通燈,為什么進不了中斷
[打印本頁]
作者:
Zach_m
時間:
2018-2-21 22:49
標題:
簡單的交通燈,為什么進不了中斷
#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)
下載附件
2018-2-21 22:49 上傳
作者:
Zach_m
時間:
2018-2-21 22:50
數碼管不走路
作者:
nhwuxi2008
時間:
2018-2-22 08:45
要開中斷的
作者:
david888
時間:
2018-2-22 08:46
void main()
{
second=1;
// Time0Init();
不用調用
作者:
wulin
時間:
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 ++;
}
}
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1