- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
99秒表程序--基于单片机at89c51
/******99 秒表*******/、
/**---------------------------------最新文件信息---------------------------------------------------
功能:99 秒表
作 者:
单 位:
时 间:
描 述:晶振11.0952MHz;数码管采用共阴;
**-------------------------------------------------------------------------------------------------
******************************************************************************/
#includereg52.h
#define uint unsigned int
#define uchar unsigned char
uchar code table_duanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管显示0~9;
/******单片机接口***********/
sbit key=P3^5;//按键
#define duanma P0//段码
#define weima P2//位码
/******全局变量************/
uchar miao=0;//秒
uchar flag=0;//秒中间变量
uchar keynum=0;//按键次数
bit key_flag=0;//按键标志
/*****中断初始化**********/
void InitTimer0()
{
TMOD = 0x01;//工作方式
TH0 = 0x4C;//高8 位
TL0 = 0x00;//低8 位
EA = 1;//总中断
ET0 = 1;//允许定时器0 中断
TR0 = 0;//启动定时器0
}
/**********延时函数**********
功能:延时若干ms
入口参数:t
出口参数:无
*****************************/
void delay_ms(uint t)
{
uint a,b,c;
for(c=t;c0;c--)
{
for(b=102;b0;b--)
for(a=3;a0;a--);
}
}
/********秒显示函数***
功能:实现秒的显示
入口参数:无
出口参数:无
*****************************/
void miao_display()
{
if(flag=20)
{
flag=0;//清零
miao++;//秒累加
if(miao99) miao=0;//秒大于99 清零
}
weima=0xfe;//选择第1 位
duanma=table_duanma[miao%10];
delay_ms(1);//延时1ms
weima=0xfd;//选择第2 位
duanma=table_duanma[miao/10];
delay_ms(1);//延时1ms
}
/**********按键扫描及处理函数**********
功能:实现按键输入及处理
入口参数:无
出口参数:无
*****************************/
void scankey()
{
if((key==0)(key_flag==0))//判断是否有按键按键且按键标志是否为0
{
key_flag=1;//按键标志为1
}
if((key==1)(key_flag==1))//等待按键释放
{
key_flag=0;//按键标志清零
keynum++;//按键次数累加
if(keynum3)keynum=1;//按键次数大于3 置1
switch(keynum)
{
case 1: TR0 = 1;//启动定时器0
break;
case 2: TR0 = 0;//关闭定时器0
break;
case 3: miao=0;//秒清零
break;
default:break;//不满足条件返回
}
}
}
/*******主函数**************
功能:
入口参数:无
出口参数:无
*****************************/
void main(void)
{
InitTimer0();//定时器初始化
while(1)
{
scankey();//按键扫描
miao_display();//秒显示
}
}
/**********定时器0 中断函数********
功能:实现秒中间变量flag 的累加
入口参数:无
出口参数:无
***************
原创力文档


文档评论(0)