姓名:曹佳鑫 日期:6 月 29 号
今日学习任务:课设:电子秒表。
今日任务完成情况:课设的100%。
今日开发中遇到的问题汇总:按下停止按键的时候,不能显示所有的数据,只能显示一个。
今日未解决的问题:无
今日开发收获:再加一个定时器,就可以解决问题。
自我评价:一般
课件代码
#include <reg51.h>
sbit button1 = P3^0;
sbit button2 = P3^1;
sbit button3 = P3^2;
unsigned char code table_duan[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f,
0x6f, 0x77, 0x7c};
int flag = 0;
int sec;
unsigned int time = 0;
void display(int num,int num1)
{
int ge, shi,ge1,shi1;
ge = num % 10;
shi = num / 10;
ge1 = num1 % 10;
shi1 =num1/10;
if (time % 4 == 1) //
{
P0 = 0xf7;
P2= table_duan[ge];
}
else if(time % 4 ==2)
{
P0 = 0xfb;
P2 = table_duan[shi];
}
else if(time % 4 ==3)
{
P0 = 0xfd;
P2 = table_duan[ge1];
}
else
{
P0 = 0xfe;
P2 = table_duan[shi1];
}
}
int main()
{
int tmp = -1;
EA = 1;
ET0 = 1;
ET1 = 1;
TMOD = 0x11;
TH0 = (65535 - 10000) / 256;
TL0 = (65535 - 10000) % 256;
TH1 = (65535 - 5000) / 256;
TL1 = (65535 - 5000) % 256;
TR0 = 0;
TR1 = 1;
while (1)
{
if(button1 == 0)
{
TR0 = 1;
}
if(button2 == 0)
{
TR0 = 0;
}
if(button3 == 0)
{
TR0 = 0;
flag = 0;
sec =0;
}
if (flag == 99)
{flag = 0;
sec ++;
}
if(sec >=60)
{
sec =0;
display(flag,sec);
}return 0;
}
void timer_0() interrupt 1
TH0 = (65535 - 10000) / 256;
TL0 = (65535 - 10000) % 256;
flag++;
}
void timer_1() interrupt 3
TH1 = (65535 - 5000) / 256;
TL1 = (65535 - 5000) % 256;
time++;
}