基于51单片机的挑战10秒游戏
利用定时器0实现时间即秒的走动
电路由四位共阳极数码管、蜂鸣器、51单片机最小系统、按键组成
数码管段选由P0口控制、位选由P2口控制
按键接在P32,蜂鸣器接在P37
四位数码管驱动程序如下:
void display1(uchar yi,uchar er)
{
P2=0x10;
P0=dd[yi];
delay1ms();
P0=0xff;
P2=0x20;
P0=dd[er]+0x80;
delay1ms();
P0=0xff;
}
void display2(uchar san,uchar si)
{
P2=0x40;
P0=dd[san];
delay1ms();
P0=0xff;
P2=0x80;
P0=dd[si];
delay1ms();
P0=0xff;
}
当仿真运行时,初始状态数码管显示0
定时器和外部中断函数的配置
定时器和外部中断函数服务函数的实现代码如下:
void Timer0Init(void) //100微秒@11.0592MHz
{
TMOD = 0x01; //设置定时器模式
TL0 =(65536-1000)%256; //设置定时初值
TH0 =(65536-1000)/256; //设置定时初值
TF0 = 1; //清除TF0标志
TR0 =0;