#include<reg52.h>
#include<intrins.h>
#define INT8U unsigned char
#define INT16U unsigned int
/
INT16U Count;
int js=0;
sbit Clear_Key=P3^2;
sbit p1=P2^0;
sbit p2=P2^1;
sbit p3=P2^2;
sbit p4=P2^3;
sbit p5=P2^4;
//sbit Clear_Key=P3^6; 修改以前的程序
void delay_ms(INT16U x)
{
INT8U t;
while(x--) for(t=0;t<120;t++);
} //以上延时函数
///////以下功能:串口初始化,波特率9600,方式1/////////
void Init_Com(void)
{
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd;
TL1 = 0xFd;
TR1 = 1;
}
#define DELAY_SEND (unsigned long)60000 //10秒 10*60*1000ms 定义 delay_send 为10秒
//#define DELAY_SEND (unsigned long)600000 //10分钟 10*60*1000ms
#define DELAY_SEND1 (unsigned long)10000 //10分钟 10*60*1000ms
unsigned long delay_send=0;
char keyscan()
{
if(Clear_Key==0)
{
while(Clear_Key==0);//等待按键弹起
delay_send = 0;
return 1;
}
else
{
return 0;
}
}
void main()
{
EA=1;
EX0=1;
IT0=1;
Init_Com();//串口初始化
while(1)
{
delay_ms(5);
delay_send++;
if((delay_send > DELAY_SEND)&&(Count > 0))
{
//delay_ms(5);
if(Count >= 100)
{
SBUF = (Count/100)+0x30; //求百位
delay_ms(8);
//SBUF = (Count%10)+0x30; //把数据发送出去
SBUF = (Count%10/10)+0x30; //把数据发送出去
delay_ms(8);
//SBUF = (Count/100)+0x30; //把数据发送出去
SBUF = (Count%10)+0x30;
//delay_ms(1);
}
else if(Count>=10)
{
//delay_ms(10);
// SBUF = dat[(Count/10)+0x30];
SBUF = (Count/10)+0x30; //把数据发送出去
delay_ms(8);
SBUF = (Count%10)+0x30;
//delay_ms(1);
}
else
{
//delay_ms(1);
SBUF = Count+0x30; //把数据发送出去
}
Count=0;
}
}
}
void into() interrupt 0 //外部中断0函数,
{
EA=0;
Count++;
delay_ms(50);
if(Count>100)
{
p1=0;
p2=0;
p3=0;
p4=0;
p5=0;
}
if(Count>80)
{
p1=0;
p2=0;
p3=0;
p4=0;
p5=0;
}
else if(60<Count<80)
{
p1=0;
p2=0;
p3=0;
p4=0;
}
else if(40<Count<60)
{
p1=0;
p2=0;
p3=0;
}
else if(20<Count<40)
{ p1=0;
p2=0;
}
if(Count<20)
{
p1=0;
}
EA=1;
}
|