⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 program_2.c

📁 里面包含了多个C语言模块设计题目
💻 C
字号:
#include<at89x52.h>
#define uint unsigned int
sbit led0=P1^0;
sbit led1=P1^1;
sbit led2=P1^2;
sbit led3=P1^3;
uint i=0,j=0,sum=100;
uint led[10]={0xbf,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
bit k=1;
void disp0(void);   
void disp1(void);
void disp2(void);   
void disp3(void);
void ledwork(void);

void main()
{ 
  TMOD=0x01;         /*定义工作模式为1*/
  EA=1;
  ET0=1;
  TR0=1;
  TH0=0xf1;          /*设置初始值,每隔4ms一次中断*/
  TL0=0x90;
   while(1)
   {
      if(sum>0)     
        {  
          ledwork();
          if(j==125)  /*每隔0.5s,总数减一*/
         {         
          j=0;
          sum=sum-1;
          }
       }
     if(sum==0&&k==1)        
         ledwork();
     if(sum==0&&k==0) /* 数码管熄灭1s*/
         P1=0xff;
     if(j==250)       /*每隔1s,k的状态变换一次,用来控制数码管工作还是熄灭*/
         {
           k=!k;
	   j=0;
         }
   }
}


void timer0(void) interrupt 1 using 1
  { 
    TH0=0xf1;
    TL0=0x90;
    i++;  
    i=i%4;
    j++;	   
   }
void disp0(void)    /* 数码管0工作函数,控制千位**/
{ 
  P0=led[0];
  led0=0;
  led3=1;
  
}
void disp1(void)  /* 数码管1工作函数,控制百位**/
{
  if(sum>99)
  P0=led[1];
  else P0=led[0];
  led1=0;
  led0=1;
  
}
void disp2(void)   /* 数码管2工作函数,控制十位**/
{ 
  uint s=0;
  s=sum/10%10;
  P0=led[s];
  led2=0;
  led1=1;
  
}
void disp3(void)   /* 数码管3工作函数,控制个位*/
{
  uint g=0;
  g=sum%10;
  P0=led[g];
  led2=1;
  led3=0;
 
}
void ledwork(void)   /*数码管工作函数*/
{
  if(i==0)  disp0();
  if(i==1)  disp1();
  if(i==2)  disp2();
  if(i==3)  disp3();    /*误差  4.023-4.00=0.023ms  版权所有2007-love21g*/
  }   

⌨️ 快捷键说明

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