t0.c

来自「52单片机开发板的实例程序」· C语言 代码 · 共 82 行

C
82
字号
/*****************
用定时器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 + =
减小字号Ctrl + -
显示快捷键?