#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code temp[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar a,b,j=0;
void delayms(uint n)
{
uchar i;
while(n--)
for(i=0;i<113;i++);
}
void main()
{
TMOD=0x60;
TL1=256-99;
TH1=256-99;
TR1=1;
EA=1;
ET1=1;
P2=0XFC;
P0=0X3F;
while(1)
{
P2=0XFD;
P0=temp[a];
delayms(2);
P2=0xff;
P2=0xfe;
P0=temp[b];
delayms(2);
P2=0xff;
}
}
void intx1() interrupt 3
{
j++;
if(j<100)
{
a=j/10;
b=j%10;
}
if(j==100)
{
P2=0XFC;
P0=0X3F;
j=0;
}
}
编写0-99的手动计数程序,按下P3.5引脚上所接的负脉冲按钮,在S1和S0两片数码管上显示计数值,加到数值100则清零,继续从0加到99重复显示。实验接线: P0.7 P0.0接DP A
+5V接段锁存和位锁存
P2.7 P2.0 接S7 S0
P3.5 接 负脉冲
这上面是我自己敲的代码,但无法实现效果,有没有人帮忙看看
1.测试过数码管可以进行数字显示吗?
2.中断服务函数void intx1() interrupt 3应该有问题哦
可以参考一下这个
https://ask.csdn.net/questions/7935269/54184160?spm=1001.2014.3001.5504
检查一下IO配置是否正确