一:keil平台的搭建与设置(12分)
选择单片机型号:89C52,晶振需为11.0592M ,编译输出HEX代码。
二: 各子函数(共5个)的功能介绍(15分):
三:现在程序中,用的T0定时器,改为用T1定时器(30分)
四:将main函数中的程序段(如下)改为子函数调用的方式实现,子函数名为:Time_学号,放在other.c文件中(20分)
if(miao==60)
{
miao=0;
f++;
if(f==60)
{
f=0;
s++;
if(s==24) //为24h一个循环,若要12h,只需在此改为12即可。
{
s=0;
}
}
}
五:修改程序,使实验板上电时,时间显示为:12.00.00 (20分)
***********************************************************************************************************************/
#include "DEFINE.h"
void main()
{
uchar shi_shi2;
uchar shi_ge2;
uchar fen_shi2;
uchar fen_ge2;
uchar miao_shi2;
uchar miao_ge2;
// unsigned int miao_gewei,miao_shiwei;
// miao=0;
T0_chushihua();
// DULA=0;//关闭段的锁存器
// WELA=1;//打开位的锁存器,选择哪一位数码管亮
// P0=0xFE;//1 1 1 1 1 1 1 0,只有WE1为低电平,也就是选中了第一数码管
// WELA=0;//关闭位的锁存器
while(1)
{
keyscan();
if(!lao_flag)
{
if(miao==60)
{
miao=0;
f++;
if(f==60)
{
f=0;
s++;
if(s==24) //为24h一个循环,若要12h,只需在此改为12即可。
{
s=0;
}
}
}
shi_shi2=s/10;
shi_ge2=s%10;
fen_shi2=f/10;
fen_ge2=f%10;
miao_shi2=miao/10;
miao_ge2=miao%10;
// if(miao_shiwei!=0)
// {
if(set)
{
TR0=0;//stop T0
display(shi_shi1,shi_ge1,fen_shi1,fen_ge1, miao_shi1,miao_ge1);
miao=miao_shi1*10+miao_ge1;
f=fen_shi1*10+fen_ge1;
s=shi_shi1*10+shi_ge1;
}
else
{
display(shi_shi2,shi_ge2,fen_shi2,fen_ge2, miao_shi2,miao_ge2);
//闹钟
if(lao_s==s&&lao_f==f&&lao_m==miao&&lao_flag==0)
{
beep=0;
delayms(500);
beep=1;
}
//end闹钟
}
}
// }
else if(lao_flag)
{
TR0=0;//stop T0
display(shi_shi1,shi_ge1,fen_shi1,fen_ge1, miao_shi1,miao_ge1);
lao_m=miao_shi1*10+miao_ge1;
lao_f=fen_shi1*10+fen_ge1;
lao_s=shi_shi1*10+shi_ge1;
}
// DULA=1;//打开段的锁存器,控制显示的内容
// P0=table[1];
// DULA=0;
// delayms(1000);
// }
}
}
void T0_timer() interrupt 1
{
TH0=(65536-45872)/256;//装载初值
TL0=(65536-45872)%256;
num++;
if(num==20)
{
num=0;
miao++;
}
}
|