姓名: 尤嘉慧 日期: 7.20
今日学习任务
设计一个电子秒表,用按键控制,暂停,继续,开始,清空。
今日任务完成情况
代码实现的功能不够完善
今日开发中出现的问题汇总
实现清零功能后无法再继续读秒
今日未解决问题
无
今日开发收获
学习了如何设计一个电子秒表,用按键控制,暂停,继续,开始,清空。
自我评价
基础差,但有认真尽力去完成任务。
其它
代码:
#include<reg51.h>
int flag=0,display_flag=0;
sbit s2=P3^0;
sbit s3=P3^1;
sbit s4=P3^2;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void display(int m,int n)
{
if(display_flag%6==0)
{
P0=0xfe;
P1=table[m/1000];
}
else if(display_flag%6==1)
{
P0=0xfd;
P1=table[m/100%10];
}
else if(display_flag%6==2)
{
P0=0xfb;
P1=table[m/10%10];
}
else if(display_flag%6==3)
{
P0=0xf7;
P1=table[m%10];
}
else if(display_flag%6==4)
{
P0=0xef;
P1=table[n/10];
}
else if(display_flag%6==5)
{
P0=0xdf;
P1=table[n%10];
}
}
int main()
{
int miao=0,num=0;
EA=1; //打开总中断
ET0=1; //打开定时器0中断
EX0=1;
EX1=1;
TMOD=0x01; //设置定时器0工作方式
TH0=(65535-1000)/256; //高八位
TL0=(65535-1000)%256; //低八位
//TR0=1; //启动定时器
while(1)
{
if(s2==0)
{
TR0=1;
}
if(flag==1)
{
num++;
if(num==100)
{
miao++;
num=0;
if(miao==10)
{
num=0;
}
}
flag=0;
}
if(s3==0)
{
TR0=0;
}
if(s4==0)
{
TR0=0,miao=0,num=0;
}
display(miao,num);
}
return 0;
}
void timer_0() interrupt 1 //中断处理函数(代码尽量少,效率高)
{
//重装初值
TH0=(65535-1000)/256; //高八位
TL0=(65535-1000)%256; //低八位
flag++;
display_flag++;
}
void inter_1() interrupt 2 //外部中断1处理函数
{
P0=0xff;
}