问题补充:程序如下
#include"reg51.h"
#include"intrins.h"
sbit p11=P1^1;
sbit p12=P1^;
sbit led=P3^1;
sbit kg=P3^2; 按钮开关
void delay()//消除开关抖动
{ .......}
void bcdkg() //读入BCD开关数(这个是您写的,因为是汇编,直接移植编译不了,所以我把它
写成了C语言,不知道对不对,请您指正)
{ uchar temp,shu,shu1;
p11=1;
p12=0;
temp=P1;
temp=~temp;
temp=_crol_(temp,2);
shu=temp&0xF;
return(shu);
}
void int0_() interrupt 0 //P3.2口的外部中断功能,用以接受BCD送过来的次数
{ unsigned char shu;
static char counter=0;
bcdkg(); //调用这个我的目的是想在下面贫下使用它的返回值,也就是 BCD 上显示的数字,不知道这样可不可以
delay();
if(INT0==0)
{ counter++;
while(INT0==0);
}
if(counter==这个地方就是BCD上显示的数字,我用上述shu替代,实际装上电路中却达不到要求)
{ counter=0;
led=~led;
}
}
void main()
{ led=0;
EX0=1;
ITO=1;
EA=1;
while(1);
}
请大家帮忙看看问题出在哪,谢谢(只用了一个BCD开关用以控制按钮开关输入次数)