STC89C52RC秒表计时器c语言代码
时间: 2023-07-26 15:03:31 浏览: 149
以下是STC89C52RC秒表计时器的C语言代码,仅供参考:
```c
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code seg[]={0xc0,0xF9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98};
uchar dis[8];
uchar time_cnt=0;
uchar start_flag=0;
void delay(uint i)
{
while(i--);
}
void dis_time()
{
dis[0]=time_cnt/1000;
dis[1]=time_cnt%1000/100;
dis[2]=time_cnt%100/10;
dis[3]=time_cnt%10;
}
void display()
{
uchar i;
for(i=0;i<8;i++)
{
P0=0x7f;
P2=seg[dis[i]];
P0=_cror_(0x7f,i+1);
delay(100);
}
}
void init()
{
TMOD=0x01;
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
TR0=1;
ET0=1;
EA=1;
}
void main()
{
init();
while(1)
{
if(start_flag==1)
{
display();
}
}
}
void timer0() interrupt 1
{
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
time_cnt++;
if(time_cnt>=10000)
{
time_cnt=0;
}
}
void keyscan()
{
if(P1!=0xff)
{
delay(1000);
if(P1!=0xff)
{
start_flag=!start_flag;
if(start_flag==0)
{
time_cnt=0;
}
}
while(P1!=0xff);
}
}
```
该代码使用了STC89C52RC单片机,秒表计时器的精度为0.2秒。其中,`dis_time()`函数用于将计时器的时间转换为数码管可以显示的格式,`display()`函数用于在数码管上显示时间,`init()`函数用于初始化定时器,`timer0()`函数用于处理定时器中断,`keyscan()`函数用于检测按键是否按下。程序中的P0、P1、P2分别对应单片机的P0、P1、P2口,seg数组中存储了0-9的数码管编码。
阅读全文