×
单片机 > 单片机程序设计 > 详情

外中断计数2位数码管显示

发布时间:2020-08-21 发布时间:
|
//用LED数码管显示计数器T0的计数值

#include   //包含51单片机寄存器定义的头文件
sbit S=P3^2 ;  //将S位定义为P3.2引脚
unsigned char Tab[ ]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};  //段码表
unsigned char x;
/******************************************************************
函数功能: 延时约0.6ms
********************************************************************/
 void delay(void)      
 {
    unsigned char j;
   for(j=0;j<200;j++)
         ;
  }

/******************************************************************
函数功能:显示计数次数的子程序
入口参数:x
********************************************************************/
 void Display(unsigned char x)
{
    P2=0xbf;        //P3.6引脚输出低电平,DS6点亮 
    P0=Tab[x/10];   //显示十位
    delay();
  delay();
   delay();
  delay();
    P2=0x7f;      //P3.7引脚输出低电平,DS7点亮 
    P0=Tab[x%10];  //显示个位
    delay();
  delay();
   delay();
  delay();
 P2=0xff;
 P0=0xff;
  delay();
  delay();
   delay();
  delay(); 
 }

/*******************************************
函数功能:主函数
******************************************/ 
void main(void)
  {
   EA=1;   //开放总中断
   EX0=1;  //允许使用外中断
   IT0=1;  //选择负跳变来触发外中断
 x=0;
 
 while(1) 
    Display(x);
    
 }
/**************************************************************
函数功能:外中断T0的中断服务程序
**************************************************************/
void int0(void) interrupt 0 using 0 //外中断0的中断编号为0
{
  x++;
  if(x==100)
   x=0;

 }

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
浅谈AVR中定时器几种工作模式