📄 t0.c
字号:
/*****************
用定时器0来作一个秒表
*************************/
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit a=P1^0;
sbit b=P1^1;
sbit c=P1^2;
/************************************
共阴数码管0---9的译码表
**********************/
const uchar table[]={
0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
uchar ms=0,s=0,fen=0;
uchar tt=0;
void delay(uint z)//延时函数
{
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
void HC138(uchar i)//74HC138子函数
{
a=i&0x01;
b=i&0x02;
c=i&0x04;
}
void display(uchar count,uchar dat)//8位数码管分成4段,每段显示两位
{
uchar ge,shi;
shi=dat/10;
ge=dat%10;
HC138(count);
P2=table[ge];
delay(1);
HC138(count+1);
P2=table[shi];
delay(1);
}
void main()
{
TMOD=0x01;//设定工作方式
TH0=(65536-4800)/256;//装入初值
TL0=(65536-4800)%256;
EA=1; //开总中断
ET0=1; //开定时器中断
TR0=1; //启动定时器
while(1)
{
display(4,ms);//显示毫秒
display(6,s);//显示秒
display(0,fen);//显示分钟
}
}
void t0() interrupt 1//定时器0中断函数
{
TH0=(65536-4610)/256;//装入初值
TL0=(65536-4610)%256;
tt++;
if(tt==2)
{
tt=0;
ms++;
if(ms==100)
{
ms=0;
s++;
if(s==60)
{
s=0;
fen++;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -