51单片机定时器T0中断动态显示4位数码管

2019-03-24 17:41发布

本帖最后由 yufei422 于 2016-4-29 16:47 编辑

1.png
共阴极4位数码管,动态2ms显示1264。显示结果如图,程序哪里出了什么问题啊?

/************************************
定时2ms中断 动态显示1264
***************************************/
#include<reg51.h>
#define uchar unsigned char
uchar tab1[4]={0x06,0x5b,0x7d,0x66};           //1264
uchar tab2[4]={0xfe,0xfd,0xfb,0xf7};
uchar i=0;
/*********************************
T0中断初始化
描述:2ms定时 12MHz,2ms=2000*1us,65536-2000=63536=1111100000110000B TH0=0xf8 TL0=0x30
**********************************/
void InitTimer0(void)
{
  TMOD=0x01;             //设定T0工作方式1
  TH0=0xf8;              //计数初值
  TL0=0x30;              
  TR0=1;
  EA=1;                               //开中断
  ET0=1;
}
/*******************************
T0中断服务程序
**********************************/
void Timer0Interrupt(void)interrupt 1
{
  TH0=0xf8;                                //计数初值
  TL0=0x30;
  i++;
  i%=4;
}
/****************************
主程序
***************************/
void main(void)
{
  InitTimer0();
  while(1)
  {
        P2=tab2; P0=tab1;            
  }
}                                       


此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。