找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5556|回復(fù): 0
收起左側(cè)

[求助]

[復(fù)制鏈接]
ID:17300 發(fā)表于 2009-9-17 14:05 | 顯示全部樓層 |閱讀模式
我的電路接法是兩組BCD開關(guān)的COM端接在P1.1和P1.2,BCD的另外四個(gè)端口分別接P1.3~P1.5上。P3.1端口接了一個(gè)LED燈,P3.2接了一個(gè)開關(guān)。我的思路是讓開關(guān)控制燈的亮滅,具體是用接在P1.1上的那個(gè)BCD上的數(shù)字控制所按的開關(guān)次數(shù)(也就是開關(guān)上顯示的是數(shù)字3,即要求連繼按3次開關(guān)......)。LED燈亮滅的時(shí)間長短由接在P1.2上的BCD開關(guān)上顯示的數(shù)字決定。(是5就過5秒鐘改變狀態(tài),是8就過8秒鐘改變.......)我寫了個(gè)程序,可是卻達(dá)不到要求,請大家?guī)兔χ附獭?
問題補(bǔ)充:
程序如下
#include"reg51.h"
#include"intrins.h"
sbit p11=P1^1;
sbit p12=P1^;
sbit led=P3^1;
sbit kg=P3^2;    按鈕開關(guān)
void delay()//消除開關(guān)抖動
{  .......}
void bcdkg()  //讀入BCD開關(guān)數(shù)(這個(gè)是您寫的,因?yàn)槭菂R編,直接移植編譯不了,所以我把它
                        寫成了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送過來的次數(shù)
{  unsigned char shu;
static char counter=0;
bcdkg();                  //調(diào)用這個(gè)我的目的是想在下面貧下使用它的返回值,也就是   BCD 上顯示的數(shù)字,不知道這樣可不可以
delay();
if(INT0==0)
{  counter++;
while(INT0==0);
}
if(counter==這個(gè)地方就是BCD上顯示的數(shù)字,我用上述shu替代,實(shí)際裝上電路中卻達(dá)不到要求)
{ counter=0;
led=~led;
}
}
void main()
{ led=0;
EX0=1;
ITO=1;
EA=1;
while(1);
}

請大家?guī)兔纯磫栴}出在哪,謝謝(只用了一個(gè)BCD開關(guān)用以控制按鈕開關(guān)輸入次數(shù))
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表