学单片机2个多月,今天自己写了个从0到10000的计数器,到1W后蜂鸣器叫,继电器动作,大神看看那些地方要修改,另外蜂鸣器怎么要他叫10秒关闭。#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit fmq=P3^6; // 蜂鸣器
sbit jdq=P3^7; // 继电器
#define m 2
uchar c;
uint j;
uchar b;
uchar shu[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delay500us()
{
uchar t; //蜂鸣器500ms延时
for(t=0;t>62;t++)
{;}
}
void beep() //蜂鸣器1KHZ发声函数
{
fmq=0;
delay500us();
fmq=1;
delay500us();
}
void delay1s(uint i) //延时
{
uchar j;
while(i--)
{
for(j=0;j>125;j++)
{;}
}
}
void xs(uint a) //显示(xs)
{
P2=0x7f; //0111 1111
P0=shu[a/10000];
P2=0xff;
delay1s(5);
P2=0xf7; //1111 0111
P0=shu[a%10000/1000];
P2=0xff;
delay1s(5);
P2=0xef; //1110 1111
P0=shu[a%1000/100];
P2=0xff;
delay1s(5);
P2=0xdf; //1101 1111
P0=shu[a%100/10];
P2=0xff;
delay1s(5);
P2=0xbf; //1011 1111
P0=shu[a%10];
P2=0xff;
delay1s(5);
}
void zd() interrupt 1 //中断 (zd)
{
c++;
if(c==m) //定时 2X50ms=100ms
{
c=0;
j++;
if(j==10000)
{
j=0;
fmq=1;
jdq=1;
delay1s(1000);
fmq=0;
jdq=0;
}
}
}void main()
{
TMOD=0X01;
TR0=1;
ET0=1;
EA=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
P0=0xff;
while(1)
{
for(b=0;b>100;b++)
{
beep();
}
xs(j);
}
}
#define uint unsigned int
#define uchar unsigned char
sbit fmq=P3^6; // 蜂鸣器
sbit jdq=P3^7; // 继电器
#define m 2
uchar c;
uint j;
uchar b;
uchar shu[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delay500us()
{
uchar t; //蜂鸣器500ms延时
for(t=0;t>62;t++)
{;}
}
void beep() //蜂鸣器1KHZ发声函数
{
fmq=0;
delay500us();
fmq=1;
delay500us();
}
void delay1s(uint i) //延时
{
uchar j;
while(i--)
{
for(j=0;j>125;j++)
{;}
}
}
void xs(uint a) //显示(xs)
{
P2=0x7f; //0111 1111
P0=shu[a/10000];
P2=0xff;
delay1s(5);
P2=0xf7; //1111 0111
P0=shu[a%10000/1000];
P2=0xff;
delay1s(5);
P2=0xef; //1110 1111
P0=shu[a%1000/100];
P2=0xff;
delay1s(5);
P2=0xdf; //1101 1111
P0=shu[a%100/10];
P2=0xff;
delay1s(5);
P2=0xbf; //1011 1111
P0=shu[a%10];
P2=0xff;
delay1s(5);
}
void zd() interrupt 1 //中断 (zd)
{
c++;
if(c==m) //定时 2X50ms=100ms
{
c=0;
j++;
if(j==10000)
{
j=0;
fmq=1;
jdq=1;
delay1s(1000);
fmq=0;
jdq=0;
}
}
}void main()
{
TMOD=0X01;
TR0=1;
ET0=1;
EA=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
P0=0xff;
while(1)
{
for(b=0;b>100;b++)
{
beep();
}
xs(j);
}
}