为啥这样不行捏?
#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++;
}
TMOD是定时器/计数器模式控制寄存器(TIMER/COUNTER MODE CONTROL REGISTER),它是一个逐位定义的8位寄存器,但只能使用字节寻址,其字节地址为89H。
其格式为: