t18.c

来自「51系列单片机在基本的开发例程」· C语言 代码 · 共 39 行

C
39
字号
/* t18.c 以1秒钟为单位,以计时/计数方式循环显示0—99 */
/*Fosc=11.0592MHz 计数65536次为71.1111ms*/

#include <reg51.h>
unsigned char i;
unsigned char led[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
                        0x80,0x90};
bit flag;
sbit p36=P3^6;

/* T/C0 定时0.05秒钟 */
void t_int(void) interrupt 1 using 1
{ p36=!p36;
  TH0=-46080/256;TL0=-46080%256;
}

/* T/C1 计数1秒钟 */
void c_int(void) interrupt 3 using 2
{
 flag=1;
}

void main(void)
{ TMOD=0x61;			/* T/C1为方式2计数,T/C0为方式1定时 */
  TH0=-46080/256;TL0=-46080%256;	/* 延时0.05秒钟参数 */
  TH1=-10;TL1=-10;		/* 延时1秒钟参数,两次反转才能产生一个计数脉冲 */
  EA=1;
  ET0=1;ET1=1;
  TR0=1;TR1=1;
  while(1)
   { for(i=0;i<=99;i++)
      { P0=led[i/10];
        P2=led[i%10];
        while(!flag);		/* 延时1秒钟 */
        flag=0;
      }
   }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?