这样加TMOD进去为啥不对

为啥这样不行捏?

#include<reg52.h>
#define LED_NUM 8
#define CYCLE 50
#define led P1
#define uint unsigned int
uint pp;
unsigned char LED_Pins[LED_NUM] = {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f};
sbit k1=P3^4;
sbit BEEP=P2^3;
sbit wei1=P2^4;        //??????????
sbit wei2=P2^5;
sbit wei3=P2^6;
sbit wei4=P2^7;        
char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77};
void Delay1(unsigned int t);
void Delay(int i) //1ms????
{
int j;
for(;i>0;i--)
{
for(j=0;j<164;j++)
{;}
}
}
void main()
{
    TMOD = 0x01;         
    TR0 = 1;             
    TH0 = 0xff;         
    TL0 = 0xa4;
    ET0 = 1;             
    EA = 1;
    int a=0;
     while(1)
    {
        if(k1 == 0)            
        {
            BEEP = 0;
            pp = 0;  // ??pp???
        }
        if(pp == 5000)    
        {
            BEEP = 1;
            pp++;   // ??pp????10000,??BEEP??????
        }
    }

      
    unsigned int PWM_LOW = 0;
  unsigned int i = 0;
    P0=table[a];
    wei1=1;
    wei2=0;
    wei3=0;
    wei4=0;
    while(1)           
    {
        if(k1==0)//°'??
 while (1)
    {
        for (i = 0; i < LED_NUM; i++)
        {
            for (PWM_LOW = 1; PWM_LOW < CYCLE; PWM_LOW++)
            {
                            led=LED_Pins[i];
                Delay1(PWM_LOW);
               led=0xff;
                Delay1(CYCLE - PWM_LOW);
            }
           led=LED_Pins[i];
                    for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)
            {                            
                            led=LED_Pins[i];
                Delay1(PWM_LOW);
                led=0xff;
                Delay1(CYCLE - PWM_LOW);
            }
    
    }
for (i = 6; i < LED_NUM; i--)
        {
            for (PWM_LOW = 1; PWM_LOW < CYCLE; PWM_LOW++)
            {
                            led=LED_Pins[i];
                Delay1(PWM_LOW);
               led=0xff;
                Delay1(CYCLE - PWM_LOW);
            }
           led=LED_Pins[i];
                    for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)
            {                            
                            led=LED_Pins[i];
                Delay1(PWM_LOW);
                led=0xff;
                Delay1(CYCLE - PWM_LOW);
            }
    
    }                  

    a=a+1;
    if(a<=9)
    {P0=table[a];
    wei1=1;
    wei2=0;
    wei3=0;
    wei4=0;
    BEEP=0;

    }
break;}        
else
            led=0xff;
    }

}

void Delay1(unsigned int t)
{
    while (t--);
}

void time0() interrupt 1
{
    TH0 = 0xff;
    TL0 = 0xa4;
    pp++;
}

  • 看下这篇博客,也许你就懂了,链接:51单片机之TMOD寄存器
  • 除此之外, 这篇博客: TMOD 计时器 计数器中的 一、概述 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • TMOD是定时器/计数器模式控制寄存器(TIMER/COUNTER MODE CONTROL REGISTER),它是一个逐位定义的8位寄存器,但只能使用字节寻址,其字节地址为89H。
    格式为:在这里插入图片描述