题目二:制作简易秒表
设计一个用8个LED显示的秒表,要求如下:1、使用Keil编写程序,产生.hex文件, 加载到Proteus仿真软件仿真出秒表;
2、AT89C51单片机使用11.0592MHz的晶振;3、使用定时器1的方式1;
4、定时器1 每20ms产生一次中断;
5、LED灯每1秒显示一 次,60秒复位到0重新开始
#include <reg51.h>
#define portled P1
#define uchar unsigned char
uchar data timcnt,second;
void display(uchar);
void main(void)
{ second=0;
timcnt=0;
TMOD=0X01;
TL0=(65536-18432)%256;
TH0=(65536-18432)/256;
ET0=1;
EA=1;
TR0=1;
while(1)
{ PCON=PCON|0X01;}
}
void tim0() interrupt 1 using 1
{ TL0=(65536-18432)%256;
TH0=(65536-18432)/256;
timcnt++;
if(timcnt>=100)
{ timcnt=0;
second++;
if(second>=30) second=0;
}
display(second);
}
void display (uchar time)
{
portled=~(((time/10)<<4)|( time%10));
}
设计一个用8个LED显示的秒表,要求如下:1、使用Keil编写程序,产生.hex文件, 加载到Proteus仿真软件仿真出秒表;
2、AT89C51单片机使用11.0592MHz的晶振;3、使用定时器1的方式1;
4、定时器1 每20ms产生一次中断;
5、LED灯每1秒显示一 次,60秒复位到0重新开始
#include <reg51.h>
#define portled P1
#define uchar unsigned char
uchar data timcnt,second;
void display(uchar);
void main(void)
{ second=0;
timcnt=0;
TMOD=0X01;
TL0=(65536-18432)%256;
TH0=(65536-18432)/256;
ET0=1;
EA=1;
TR0=1;
while(1)
{ PCON=PCON|0X01;}
}
void tim0() interrupt 1 using 1
{ TL0=(65536-18432)%256;
TH0=(65536-18432)/256;
timcnt++;
if(timcnt>=100)
{ timcnt=0;
second++;
if(second>=30) second=0;
}
display(second);
}
void display (uchar time)
{
portled=~(((time/10)<<4)|( time%10));
}