大家帮忙啊:C语言编写七段数码管显示0到16数字的程序

2024-11-27 05:03:16
推荐回答(1个)
回答1:

 

外中断0接一按键,模拟检测上层乘客。

#include 

#define uchar unsigned char

#define uint unsigned int 

sbit P2_0=P2^0;

sbit P2_1=P2^1; 

uchar a=16,time;

bit flag0,flag1;

uchar code tab[ ]={

     0x3F,/*0*/

           0x06,/*1*/

           0x5B,/*2*/

           0x4F,/*3*/

           0x66,/*4*/

           0x6D,/*5*/

           0x7D,/*6*/

           0x07,/*7*/

           0x7F,/*8*/

           0x6F,/*9*/

      };

       

void delay_ms(uint ms)

{

 uchar i;

 while(ms--)

 for(i=0;i<123;i++);

}         

void INTinit()

{

 TMOD=0x01;

 EA=1;

 EX0=1;

 IT0=1;

 ET0=1;

 TR0=1;

 TH0=0x3c;

 TL0=0xb0;

}

void disp()

{

 P0=tab[a/10];

 P2_0=0;

 delay_ms(3);

 P2_0=1;

 P0=tab[a%10];

 P2_1=0;

 delay_ms(3);

 P2_1=1;

}

void main()

{

 INTinit();

 while(1)

 {

  if(a>4)

  flag0=1;

  else

  flag0=0;

  if(!flag0)

  disp();

  else

  {

   if(flag1)

   disp();

  }

 }

}

void EX0INT() interrupt 0

{

 a--;

 if(a==0)

 EA=0;

}

void T0INT() interrupt 1

{

 TH0=0x3c;

 TL0=0xb0;

 time++;

 if(time==5)

 {

  time=0;

  flag1=!flag1;

 }