栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C:89C52单片机实现计时精度百分之一-秒的田径比赛电子计时器

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C:89C52单片机实现计时精度百分之一-秒的田径比赛电子计时器

#include 
#include 
#include 


sbit startButton=P0^0;
sbit pauseButton=P0^1;
sbit resetButton=P0^2;
sbit exitButton=P0^3;


void time(unsigned int ucMs);
unsigned char HEXtoBCD (unsigned char hex)
{
return ((hex/10)*16+(hex%10));
}
void main (void)
{
unsigned char uc10ms=0,uc1s=0,uc60s=0;
while (1) {
exitButton =1;
uc10ms=0,uc1s=0,uc60s=0;
P1=HEXtoBCD(uc10ms);
P2=HEXtoBCD(uc1s);
P3=HEXtoBCD(uc60s);
while (startButton);
while (!startButton);
while(exitButton){
time(7);
uc10ms++;
if (uc10ms==100){
uc10ms=0;uc1s++;
}
P1=HEXtoBCD(uc10ms);
if(uc1s==60){
uc1s=0;uc60s++;
}
P2=HEXtoBCD(uc1s);
if(uc60s==60){
uc60s=0;
}
P3=HEXtoBCD(uc60s);

if(!pauseButton){
while(!pauseButton);
while(pauseButton){
if(!resetButton){
uc10ms=0,uc1s=0,uc60s=0;
P1=HEXtoBCD(uc10ms);
P2=HEXtoBCD(uc1s);
P3=HEXtoBCD(uc60s);
}
if(exitButton==0){
   exitButton=0;
break;
}
}
while (!pauseButton);
}
if(!resetButton){
uc10ms=0,uc1s=0,uc60s=0;
P1=HEXtoBCD(uc10ms);
P2=HEXtoBCD(uc1s);
P3=HEXtoBCD(uc60s);
}
}
}
}
void delay_5us(void)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
void delay_50us(void)
{
unsigned char i;
for (i=0;i<4;i++)
{
delay_5us();
}
}
void delay_100us(void)
{
delay_50us();
delay_50us();
}
void time(unsigned int ucMs)
{
unsigned char j;
while (ucMs>0){
for(j=0;j<10;j++) delay_100us();
ucMs--;
}
}

proteus仿真图

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/779995.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号