51單片機(jī)對(duì)兩位 BCD撥盤 的讀出程序
問(wèn)題:做了一個(gè)小設(shè)計(jì),用的是AT89C2051,其中P1口接兩位BCD指撥開(kāi)關(guān),P3.2接了一個(gè)開(kāi)關(guān),P3.3接了一個(gè)繼電器。
兩位BCD指撥開(kāi)關(guān)的具體接法是公共端接P1.1和P1.2口,8421分別接在P1.3~P1.6口。
我想通過(guò)開(kāi)關(guān)控制繼電器開(kāi)合。具體要求是:按開(kāi)關(guān)的次數(shù)由BCD開(kāi)關(guān)的十位來(lái)決定,即BCD上顯示的是數(shù)字3,則按3次P3.2所接的開(kāi)關(guān),繼電器才開(kāi)始動(dòng)作,顯示5,則按5次繼電器才動(dòng)作,以此類推;而繼電器開(kāi)合時(shí)間由BCD開(kāi)關(guān)的個(gè)位控制,如果BCD上顯示的是數(shù)字3,則繼電器開(kāi)或合3分鐘,是5則開(kāi)或合5分鐘。
不知道如何讀入的P1口值并分開(kāi)成兩部分,請(qǐng)哪位前輩高手幫忙寫個(gè)程序,讓我學(xué)習(xí)學(xué)習(xí)。在此萬(wàn)分感謝。
懸賞分:50 - 解決時(shí)間:2009-9-12 14:27
;============================
最佳答案:
利用兩個(gè)BCD指撥開(kāi)關(guān),設(shè)定了按鍵次數(shù)和延時(shí)時(shí)間(分鐘數(shù));按鍵輸入、繼電器輸出。
很簡(jiǎn)單,樓主寫的非常清楚。
BCD指撥開(kāi)關(guān)(又稱為撥盤、撥碼開(kāi)關(guān)),其輸出是按照8421形式,但是它有個(gè)公共端,輸入高電平的時(shí)候,輸出的8421碼是高電平有效。
;----------------------------
;讀入BCD(8421)撥碼開(kāi)關(guān):
SETB P1.1 ;屏蔽一組
CLR P1.0 ;P1.0所連接的撥盤有效
MOV A, P1 ;讀入,低有效
CPL A ;有效值變高
RR A
RR A
ANL A, #0FH ;留下低四位
MOV R7, A ;存好
SETB P1.0 ;屏蔽另一組
CLR P1.1 ;P1.1所連接的撥盤有效
MOV A, P1 ;讀入,低有效
CPL A ;有效值變高
RR A
RR A
ANL A, #0FH ;留下低四位
MOV R6, A ;存好
;這樣,就將兩組BCD碼,存到了R6和R7。