我写的是共阳极,你想共阴极,自己改RXD和TDX输入电平以及P2码值就好。
根据你题目要求连接的。两个LED动态显示,交替间隔时间常量stime我设的50ms,因为我是仿真软件,间隔太短显示不出交替效果,你用板子测试的话,可以把间隔调小。
另外你题目暂停按钮连在普通引脚, 如果按钮直接连外部中断0来实现暂停会更敏感。
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define duan P2
#define stime 50 //LED交替闪烁间隔时间
void init();
void pause();
sbit wei1=P3^0;
sbit wei2=P3^1;
sbit s2=P1^4;
sbit s3=P1^6;
//共阳极
void delay(uint xms);
uint g=0;
uint s=0;
uint count=0;
uint ispause=0;
void main()
{
uchar nums[10]={0xc0,0xf9,0xa4,0xB0,0x99,0x92,0x82,0xf8,0x80,0x98};
init();
while(1)
{
if(s2==0 && ispause==0)
{
if(s2==0)
{
while(s2==0);
ispause=1;
pause();
}
}
else if(s3==0 && ispause==1)
{
if(s3==0)
{
while(s3==0);
ispause=0;
pause();
}
}
if(s==0)
{
duan=nums[g];
wei1=0;
wei2=1;
}
else
{
duan=nums[s];
wei1=1;
wei2=0;
delay(stime);
duan=nums[g];
wei1=0;
wei2=1;
delay(stime);
}
}
}
void pause()
{
EA=~EA;
}
void init()
{
TMOD=0x02; //T0 工作模式2 自动装填8位 200us
TH0=0x38;
TL0=0x38;
EA=1;
ET0=1;
TR0=1;
}
void ct() interrupt 1
{
if(count<5000)
count++;
else
{
count=0;
if(g==9)
{
g=0;
if(s==9)
s=0;
else
s++;
}
else
g++;
}
}
void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=112;j>0;j--);
}
我也不懂。能不能你重新做一个 配上图和程序