学习日志 姓名: 王瑶 日期: 2017.07.19
今日学习任务 |
秒表设计程序的改进和完善 |
今日任务完成情况 (详细说明本日任务是否按计划完成,开发的代码量。)
|
针对昨日没有完成的一些类如数码管最后两位不能显示、清零后不能重新继续等情况,今日做了一些改进,现在这些情况已经基本解决,所做出来的秒表能够正常显示,并可以实现开始、暂停、继续、清零等操作。 |
今日开发中遇到的问题汇总 |
采用中断程序后程序的走向问题。 |
今日开发收获
扫描二维码关注公众号,回复:
2311690 查看本文章
|
|
自我评价 (是否规范完成指定任务,需要改进的地方,与他人合作等。) |
在一些地方还是会有些晕,但已经可以不借助百度的情况下独自编写相对健全的程序了。 |
秒表程序:
#include<reg51.h>
sbit start_key=P3^0;
sbit pause_key=P3^1;
sbit continue_key=P3^3;
sbit clear_key=P3^2;
int flag=0,miao=0,num=0,display_flag=0;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void display(int m,int n)
{
if(display_flag%12==0)
{
P0=0xfe;
P1=table[m/1000];
}
else if(display_flag%12==2)
{
P0=0xfd;
P1=table[(m/100)%10];
}
else if(display_flag%12==4)
{
P0=0xfb;
P1=table[(m/10)%10];
}
else if(display_flag%12==6)
{
P0=0xf7;
P1=table[m%10];
}
else if(display_flag%12==8)
{
P0=0xef;
P1=table[n/10];
}
else if(display_flag%12==10)
{
P0=0xdf;
P1=table[n%10];
}
}
int main()
{
P0=0xc0;
P1=table[0];
EA=1; //打开总中断
ET0=1; //打开定时器0中断
TMOD=0x01;//设置定时器0工作方式1
TH0=(65535-5000)/256; //高八位
TL0=(65535-5000)%256; //低八位
if(start_key==0)
{
TR0=1; //启动定时器
while(1)
{
if(pause_key==0)
{
TR0=0;
}
if(continue_key==0)
{
TR0=1;
}
if(clear_key==0)
{
TR0=0;
num=0;
miao=0;
}
if(flag==2)
{
num++;
if(num==100)
{
miao++;
num=0;
if(miao==1000)
{
miao=0;
}
}
flag=0;
}
display_flag++;
display(miao,num);
}
}while(!start_key);
return 0;
}
void time_0() interrupt 1
{
TH0=(65535-5000)/256; //高八位
TL0=(65535-5000)%256; //低八位
flag++;
}