問題補充:程序如下
#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開關用以控制按鈕開關輸入次數)