标题:
单片机设计把led灯的代码加到主函数后数码管就不亮了
[打印本页]
作者:
14761307256
时间:
2022-6-1 21:58
标题:
单片机设计把led灯的代码加到主函数后数码管就不亮了
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
char s;
uchar num=0;
char time=20;
char datitime=30;
uint tt,t1;
bit flag,s_flag=1,b_flag,fall_flag,fw_flag;
sbit K0=P3^0;
sbit beep=P3^7;
sbit K1=P1^0;
sbit K2=P1^1;
sbit K3=P1^2;
sbit K4=P1^3;
sbit D1=P1^4;
sbit D2=P1^5;
sbit D3=P1^6;
sbit D4=P1^7;
sbit K_fw=P3^2;
sbit K_Time=P3^5;
void delay(uchar ms)
{
uchar y;
for(;ms>0;ms--)
for(y=120;y>0;y--);
}
uchar code tabledu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar code tablewe[]={0XFE,0XFD,0XFB,0XF7};
void T0_Init(void)
{
TMOD=0X01;
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
TH1=(65536-2000)/256;
TL1=(65536-2000)%256;
ET0=1;
ET1=1;
EX0=1;
EA=1;
IT0=1;
P0=0;
}
void Key_Scan(void)
{
if(K0==0)
{
delay(10);
if(K0==0)
{
while(!K0);
TR0=1;
s=time;
tt=0;
flag=1;
s_flag=1;
b_flag=1;
num=0;
beep=1;
fall_flag=0;
}
}
}
void Scan(void)
{
if(K1==0)
{
delay(10);
if(K1==0)
{
while(!K1);
num=1;
TR0=0;
TR1=1;
s_flag=0;
}
}
if(K2==0)
{
delay(10);
if(K2==0)
{
while(!K2);
num=2;
TR0=0;
TR1=1;
s_flag=0;
}
}
if(K3==0)
{
delay(10);
if(K3==0)
{
while(!K3);
num=3;
TR0=0;
TR1=1;
s_flag=0;
}
}
if(K4==0)
{
delay(10);
if(K4==0)
{
while(!K4);
num=4;
TR0=0;
TR1=1;
s_flag=0;
}
}
}
void display(void)
{
if(flag==1)
{
if(num!=0)
{
P0=tabledu[num];
P2=tablewe[0];
delay(2);
P0=0;
P2=0XFF;
}
else
{
P0=0;
P2=0XFF;
}
P0=tabledu[s/10];
P2=tablewe[2];
delay(2);
P0=0;
P2=0XFF;
P0=tabledu[s%10];
P2=tablewe[3];
delay(2);
P2=0XFF;
P0=0;
}
else
{
if(fall_flag==1)
{
if(num!=0)
{
P0=tabledu[num];
P2=tablewe[0];
delay(2);
P0=0;
P2=0XFF;
P0=tabledu[15];
P2=tablewe[2];
delay(2);
P0=0;
P2=0XFF;
P0=tabledu[15];
P2=tablewe[3];
delay(2);
P0=0;
P2=0XFF;
}
else
{
P0=0;
P2=0XFF;
}
}
else
{
P0=tabledu[15];
P2=tablewe[0];
delay(2);
P0=0;
P0=tabledu[15];
P2=tablewe[2];
delay(2);
P0=0;
P2=0XFF;
P0=tabledu[15];
P2=tablewe[3];
delay(2);
P0=0;
P2=0XFF;
}
}
}
void main(void)
{
T0_Init();
while(1)
{
if(K0==0)
{
D1=0;
}
}
{
Key_Scan();
if((flag==0)&(s_flag==1))
if((flag==1)&(s_flag==0))
{
if(K_Time==0)
{
delay(10);
if(K_Time==0)
{
while(!K_Time);
s=datitime;
TR0=1;
tt=0;
TR1=1;
}
}
}
if((flag==0)&(s_flag==1))
{
Scan();
if(num!=0)
{
fall_flag=1;
}
}
if((flag==1)&(s_flag==1))
{
Scan();
}
display();
}
}
void int0(void) interrupt 0
{
if(K_fw==0)
{
while(!K_fw)
{
while(K0==1)
{P0=tabledu[15];
P2=tablewe[0];
delay(2);
P0=0;
P0=tabledu[15];
P2=tablewe[2];
delay(2);
P0=0;
P2=0xFF;
P0=tabledu[15];
P2=tablewe[3];
delay(2);
P0=0;
P2=0xFF;}
}
}
}
void timer0(void) interrupt 1
{
TH0=(65536-2000)/256; //2ms
TL0=(65536-2000)%256;
if(b_flag)
{
beep=~beep;
}
else
beep=1;
if(s<5)
{
if(s%2==0)
{
b_flag=1;
}
else
{
b_flag=0;
}
}
tt++;
if(tt==500)
{
tt=0;
s--;
b_flag=0;
if(s==-1)
{
s=20;
TR0=0;
flag=0;
s_flag=1;
num=0;
}
}
}
void timer1(void) interrupt 3
{
TH1=(65536-2000)/256;
TL1=(65536-2000)%256;
beep=~beep;
t1++;
if(t1==500)
{
t1=0;
TR1=0;
}
}
单片机设计把led灯的代码加到主函数后数码管就不亮了,但是把led灯的拿掉后又出来了.
{)8{`A0WIR3NAU$CK5`V52E.png
(59.32 KB, 下载次数: 18)
下载附件
2022-6-1 21:58 上传
作者:
lkc8210
时间:
2022-6-2 09:23
这是什么缝合怪代码?
如果你说的led灯代码是下面箭嘴所指的那段
你的C 语言要补一补课了
void main(void)
{
T0_Init();
while(1)
{//<<<<<<<<<<<<<<<
if(K0==0)
{
D1=0;
}
}//<<<<<<<<<<<<<<<
{
Key_Scan();
if((flag==0)&(s_flag==1))
if((flag==1)&(s_flag==0))
{
if(K_Time==0)
{
delay(10);
if(K_Time==0)
{
while(!K_Time);
s=datitime;
TR0=1;
tt=0;
TR1=1;
}
}
}
if((flag==0)&(s_flag==1))
{
Scan();
if(num!=0)
{
fall_flag=1;
}
}
if((flag==1)&(s_flag==1))
{
Scan();
}
display();
}
}
复制代码
作者:
兴安xa
时间:
2022-6-2 10:38
void main(void)
{
T0_Init();
while(1)
{
if(K0==0)
{
D1=0;
}
}《《《《《《《《《《程序到此不再往下,要么改复合方式,要么加控制语句,要看你想要同时运行还是分时运行
{
Key_Scan();
作者:
hzhehe
时间:
2022-6-2 11:44
死循环,跑不出去理所应当,不跑出去哪来的数码管亮灭
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1